From fcf1c4e53fb765a90cb01a3430826e64c4e83e40 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 2 Dec 2009 19:33:08 +0000 Subject: [PATCH 01/70] Remove useless debugging statement --- plugins/TwitterBridge/daemons/twitterstatusfetcher.php | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index b5428316bd..eba1d563b3 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -109,7 +109,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon $flink->find(); $flinks = array(); - common_log(LOG_INFO, "hello"); while ($flink->fetch()) { From 4f359d2a8baa89f3ced8b9d7ac2c9dd1b4cfb73b Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 2 Dec 2009 16:44:23 -0800 Subject: [PATCH 02/70] Delete design when user chooses to restore default design, instead of saving a design with site defaults. --- actions/groupdesignsettings.php | 13 ++++--- actions/userdesignsettings.php | 14 +++---- lib/api.php | 3 +- lib/designsettings.php | 66 ++++----------------------------- 4 files changed, 23 insertions(+), 73 deletions(-) diff --git a/actions/groupdesignsettings.php b/actions/groupdesignsettings.php index b87b7d156a..1c998efe1e 100644 --- a/actions/groupdesignsettings.php +++ b/actions/groupdesignsettings.php @@ -173,17 +173,12 @@ class GroupDesignSettingsAction extends DesignSettingsAction function getWorkingDesign() { - $design = null; if (isset($this->group)) { $design = $this->group->getDesign(); } - if (empty($design)) { - $design = $this->defaultDesign(); - } - return $design; } @@ -197,7 +192,13 @@ class GroupDesignSettingsAction extends DesignSettingsAction function showContent() { - $this->showDesignForm($this->getWorkingDesign()); + $design = $this->getWorkingDesign(); + + if (empty($design)) { + $design = Design::siteDesign(); + } + + $this->showDesignForm($design); } /** diff --git a/actions/userdesignsettings.php b/actions/userdesignsettings.php index 568c1d6242..31a097970d 100644 --- a/actions/userdesignsettings.php +++ b/actions/userdesignsettings.php @@ -96,14 +96,8 @@ class UserDesignSettingsAction extends DesignSettingsAction function getWorkingDesign() { - $user = common_current_user(); $design = $user->getDesign(); - - if (empty($design)) { - $design = $this->defaultDesign(); - } - return $design; } @@ -117,7 +111,13 @@ class UserDesignSettingsAction extends DesignSettingsAction function showContent() { - $this->showDesignForm($this->getWorkingDesign()); + $design = $this->getWorkingDesign(); + + if (empty($design)) { + $design = Design::siteDesign(); + } + + $this->showDesignForm($design); } /** diff --git a/lib/api.php b/lib/api.php index e2ea87b43e..5a3bb5ee45 100644 --- a/lib/api.php +++ b/lib/api.php @@ -134,7 +134,6 @@ class ApiAction extends Action $twitter_user['protected'] = false; # not supported by StatusNet yet $twitter_user['followers_count'] = $profile->subscriberCount(); - $defaultDesign = Design::siteDesign(); $design = null; $user = $profile->getUser(); @@ -145,7 +144,7 @@ class ApiAction extends Action } if (empty($design)) { - $design = $defaultDesign; + $design = Design::siteDesign(); } $color = Design::toWebColor(empty($design->backgroundcolor) ? $defaultDesign->backgroundcolor : $design->backgroundcolor); diff --git a/lib/designsettings.php b/lib/designsettings.php index 99f44b5b7c..b70ba0dfca 100644 --- a/lib/designsettings.php +++ b/lib/designsettings.php @@ -333,49 +333,6 @@ class DesignSettingsAction extends AccountSettingsAction $this->autofocus('design_background-image_file'); } - /** - * Get a default design - * - * @return Design design - */ - - function defaultDesign() - { - $defaults = common_config('site', 'design'); - - $design = new Design(); - - try { - - $color = new WebColor(); - - $color->parseColor($defaults['backgroundcolor']); - $design->backgroundcolor = $color->intValue(); - - $color->parseColor($defaults['contentcolor']); - $design->contentcolor = $color->intValue(); - - $color->parseColor($defaults['sidebarcolor']); - $design->sidebarcolor = $color->intValue(); - - $color->parseColor($defaults['textcolor']); - $design->textcolor = $color->intValue(); - - $color->parseColor($defaults['linkcolor']); - $design->linkcolor = $color->intValue(); - - $design->backgroundimage = $defaults['backgroundimage']; - - $design->disposition = $defaults['disposition']; - - } catch (WebColorException $e) { - common_log(LOG_ERR, _('Bad default color settings: ' . - $e->getMessage())); - } - - return $design; - } - /** * Save the background image, if any, and set its disposition * @@ -445,24 +402,17 @@ class DesignSettingsAction extends AccountSettingsAction function restoreDefaults() { - $design = $this->getWorkingDesign(); - $default = $this->defaultDesign(); - $original = clone($design); + $design = $this->getWorkingDesign(); - $design->backgroundcolor = $default->backgroundcolor; - $design->contentcolor = $default->contentcolor; - $design->sidebarcolor = $default->sidebarcolor; - $design->textcolor = $default->textcolor; - $design->linkcolor = $default->linkcolor; + if (!empty($design)) { - $design->setDisposition(false, true, false); + $result = $design->delete(); - $result = $design->update($original); - - if ($result === false) { - common_log_db_error($design, 'UPDATE', __FILE__); - $this->showForm(_('Couldn\'t update your design.')); - return; + if ($result === false) { + common_log_db_error($design, 'DELETE', __FILE__); + $this->showForm(_('Couldn\'t update your design.')); + return; + } } $this->showForm(_('Design defaults restored.'), true); From bb2311ea18dd4519db6db5428bf3acb239e809ad Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 2 Dec 2009 17:50:51 -0800 Subject: [PATCH 03/70] Only pick up new default site colors if the theme has NOT changed. --- actions/designadminpanel.php | 49 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index 8bc8c44500..a64a900b8a 100644 --- a/actions/designadminpanel.php +++ b/actions/designadminpanel.php @@ -129,8 +129,6 @@ class DesignadminpanelAction extends AdminPanelAction $bgimage = $this->saveBackgroundImage(); - common_debug("background image: $bgimage"); - static $settings = array('theme', 'logo'); $values = array(); @@ -141,13 +139,28 @@ class DesignadminpanelAction extends AdminPanelAction $this->validate($values); - // assert(all values are valid); + $oldtheme = common_config('site', 'theme'); - $bgcolor = new WebColor($this->trimmed('design_background')); - $ccolor = new WebColor($this->trimmed('design_content')); - $sbcolor = new WebColor($this->trimmed('design_sidebar')); - $tcolor = new WebColor($this->trimmed('design_text')); - $lcolor = new WebColor($this->trimmed('design_links')); + $config = new Config(); + + $config->query('BEGIN'); + + // Only update colors if the theme has not changed. + + if ($oldtheme == $values['theme']) { + + $bgcolor = new WebColor($this->trimmed('design_background')); + $ccolor = new WebColor($this->trimmed('design_content')); + $sbcolor = new WebColor($this->trimmed('design_sidebar')); + $tcolor = new WebColor($this->trimmed('design_text')); + $lcolor = new WebColor($this->trimmed('design_links')); + + Config::save('design', 'backgroundcolor', $bgcolor->intValue()); + Config::save('design', 'contentcolor', $ccolor->intValue()); + Config::save('design', 'sidebarcolor', $sbcolor->intValue()); + Config::save('design', 'textcolor', $tcolor->intValue()); + Config::save('design', 'linkcolor', $lcolor->intValue()); + } $onoff = $this->arg('design_background-image_onoff'); @@ -162,9 +175,11 @@ class DesignadminpanelAction extends AdminPanelAction $tile = $this->boolean('design_background-image_repeat'); - $config = new Config(); + // Hack to use Design's bit setter + $scratch = new Design(); + $scratch->setDisposition($on, $off, $tile); - $config->query('BEGIN'); + Config::save('design', 'disposition', $scratch->disposition); foreach ($settings as $setting) { Config::save('site', $setting, $values[$setting]); @@ -174,21 +189,7 @@ class DesignadminpanelAction extends AdminPanelAction Config::save('design', 'backgroundimage', $bgimage); } - Config::save('design', 'backgroundcolor', $bgcolor->intValue()); - Config::save('design', 'contentcolor', $ccolor->intValue()); - Config::save('design', 'sidebarcolor', $sbcolor->intValue()); - Config::save('design', 'textcolor', $tcolor->intValue()); - Config::save('design', 'linkcolor', $lcolor->intValue()); - - // Hack to use Design's bit setter - $scratch = new Design(); - $scratch->setDisposition($on, $off, $tile); - - Config::save('design', 'disposition', $scratch->disposition); - $config->query('COMMIT'); - - return; } /** From 56b3e13d4aec5649b5858597729a1af5e5407c9c Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 2 Dec 2009 18:05:19 -0800 Subject: [PATCH 04/70] Reload the admin design panel page to show the new CSS when the design gets reset. --- actions/designadminpanel.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index a64a900b8a..f862aff0eb 100644 --- a/actions/designadminpanel.php +++ b/actions/designadminpanel.php @@ -213,6 +213,10 @@ class DesignadminpanelAction extends AdminPanelAction } // XXX: Should we restore the default dir settings, etc.? --Z + + // XXX: I can't get it to show the new settings without forcing + // this terrible reload -- FIX ME! + common_redirect(common_local_url('designadminpanel'), 303); } /** From e3caec9d8a512586461de91962c0a7d295d09228 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Wed, 2 Dec 2009 21:24:41 -0500 Subject: [PATCH 05/70] Load notice data using javascript from the html on the page instead of writing json representations of the notices on each page Clicking on a geo link pops up a map (round 2) --- plugins/Mapstraction/MapstractionPlugin.php | 72 +-------------------- plugins/Mapstraction/allmap.php | 61 ++++++++++++++++- plugins/Mapstraction/usermap.php | 66 ++++++++++++++++++- 3 files changed, 127 insertions(+), 72 deletions(-) diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index c0c2c5b8e3..a0dbf52040 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -58,12 +58,12 @@ class MapstractionPlugin extends Plugin * * The way to register new actions from a plugin. * - * @param Router $m reference to router + * @param Router &$m reference to router * * @return boolean event handler return */ - function onRouterInitialized($m) + function onRouterInitialized(&$m) { $m->connect(':nickname/all/map', array('action' => 'allmap'), @@ -110,11 +110,6 @@ class MapstractionPlugin extends Plugin function onEndShowScripts($action) { $actionName = $action->trimmed('action'); - // These are the ones that have maps on 'em - if (!in_array($actionName, - array('showstream', 'all', 'allmap', 'usermap'))) { - return true; - } switch ($this->provider) { @@ -151,39 +146,6 @@ class MapstractionPlugin extends Plugin $action->raw(sprintf('var _provider = "%s";', $this->provider)); $action->elementEnd('script'); - switch ($actionName) { - case 'usermap': - case 'showstream': - $notice = empty($action->tag) - ? $action->user->getNotices(($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1) - : $action->user->getTaggedNotices($action->tag, ($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1, 0, 0, null); - break; - case 'all': - case 'allmap': - $cur = common_current_user(); - if (!empty($cur) && $cur->id == $action->user->id) { - $notice = $action->user->noticeInbox(($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - } else { - $notice = $action->user->noticesWithFriends(($action->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - } - break; - } - - $jsonArray = array(); - - while ($notice->fetch()) { - if (!empty($notice->lat) && !empty($notice->lon)) { - $jsonNotice = $this->noticeAsJson($notice); - $jsonArray[] = $jsonNotice; - } - } - - $action->elementStart('script', array('type' => 'text/javascript')); - $action->raw('/*raw('var _notices = ' . json_encode($jsonArray)); - $action->raw('/*]]>*/'); // XHTML compat for Safari - $action->elementEnd('script'); - return true; } @@ -214,34 +176,4 @@ class MapstractionPlugin extends Plugin $action->elementEnd('div'); } - - function noticeAsJson($notice) - { - // FIXME: this code should be abstracted to a neutral third - // party, like Notice::asJson(). I'm not sure of the ethics - // of refactoring from within a plugin, so I'm just abusing - // the ApiAction method. Don't do this unless you're me! - - require_once(INSTALLDIR.'/lib/api.php'); - - $act = new ApiAction('/dev/null'); - - $arr = $act->twitterStatusArray($notice, true); - $arr['url'] = $notice->bestUrl(); - $arr['html'] = $notice->rendered; - $arr['source'] = $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; - } - - $profile = $notice->getProfile(); - $arr['user']['profile_url'] = $profile->profileurl; - - return $arr; - } } diff --git a/plugins/Mapstraction/allmap.php b/plugins/Mapstraction/allmap.php index 6a48b141fe..3a78ac0d4b 100644 --- a/plugins/Mapstraction/allmap.php +++ b/plugins/Mapstraction/allmap.php @@ -122,4 +122,63 @@ class AllmapAction extends OwnerDesignAction 'class' => 'gray smallmap', 'style' => "width: 100%; height: 400px")); } -} \ No newline at end of file + + function showScripts() + { + parent::showScripts(); + $cur = common_current_user(); + if (!empty($cur) && $cur->id == $this->user->id) { + $notice = $this->user->noticeInbox(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); + } else { + $notice = $this->user->noticesWithFriends(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); + } + + $jsonArray = array(); + + while ($notice->fetch()) { + if (!empty($notice->lat) && !empty($notice->lon)) { + $jsonNotice = $this->noticeAsJson($notice); + $jsonArray[] = $jsonNotice; + } + } + + $this->elementStart('script', array('type' => 'text/javascript')); + $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); + $this->raw('showMapstraction($("#map_canvas"),_notices);'); + $this->raw('/*]]>*/'); // XHTML compat for Safari + $this->elementEnd('script'); + + return true; + } + + function noticeAsJson($notice) + { + // FIXME: this code should be abstracted to a neutral third + // party, like Notice::asJson(). I'm not sure of the ethics + // of refactoring from within a plugin, so I'm just abusing + // the ApiAction method. Don't do this unless you're me! + + require_once(INSTALLDIR.'/lib/api.php'); + + $act = new ApiAction('/dev/null'); + + $arr = $act->twitterStatusArray($notice, true); + $arr['url'] = $notice->bestUrl(); + $arr['html'] = $notice->rendered; + $arr['source'] = $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; + } + + $profile = $notice->getProfile(); + $arr['user']['profile_url'] = $profile->profileurl; + + return $arr; + } +} diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php index fbf1469c33..afa48b1629 100644 --- a/plugins/Mapstraction/usermap.php +++ b/plugins/Mapstraction/usermap.php @@ -123,4 +123,68 @@ class UsermapAction extends OwnerDesignAction 'class' => 'gray smallmap', 'style' => "width: 100%; height: 400px")); } -} \ No newline at end of file + + /** + * Hook for adding extra JavaScript + * + * @param Action $action Action object for the page + * + * @return boolean event handler return + */ + + function showScripts() + { + parent::showScripts(); + $notice = empty($this->tag) + ? $this->user->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1) + : $this->user->getTaggedNotices($this->tag, ($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1, 0, 0, null); + + $jsonArray = array(); + + while ($notice->fetch()) { + if (!empty($notice->lat) && !empty($notice->lon)) { + $jsonNotice = $this->noticeAsJson($notice); + $jsonArray[] = $jsonNotice; + } + } + + $this->elementStart('script', array('type' => 'text/javascript')); + $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); + $this->raw('showMapstraction($("#map_canvas"),_notices);'); + $this->raw('/*]]>*/'); // XHTML compat for Safari + $this->elementEnd('script'); + + return true; + } + + function noticeAsJson($notice) + { + // FIXME: this code should be abstracted to a neutral third + // party, like Notice::asJson(). I'm not sure of the ethics + // of refactoring from within a plugin, so I'm just abusing + // the ApiAction method. Don't do this unless you're me! + + require_once(INSTALLDIR.'/lib/api.php'); + + $act = new ApiAction('/dev/null'); + + $arr = $act->twitterStatusArray($notice, true); + $arr['url'] = $notice->bestUrl(); + $arr['html'] = $notice->rendered; + $arr['source'] = $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; + } + + $profile = $notice->getProfile(); + $arr['user']['profile_url'] = $profile->profileurl; + + return $arr; + } +} From c89b10ffe4adb1df724b6a7c5c31b42c7dd3376b Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Wed, 2 Dec 2009 09:47:02 -0800 Subject: [PATCH 06/70] Code style cleanup: dropped some unnecessary =& reference assignments where they're used only out of habit for PHP 4-style object semantics --- actions/all.php | 2 +- actions/subscribers.php | 2 +- actions/subscriptions.php | 2 +- actions/userbyid.php | 2 +- lib/schema.php | 18 +++++++++--------- lib/util.php | 2 +- plugins/OpenID/finishaddopenid.php | 4 ++-- scripts/fixup_utf8.php | 8 ++++---- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/actions/all.php b/actions/all.php index 61cedce749..5a9d97dd76 100644 --- a/actions/all.php +++ b/actions/all.php @@ -160,7 +160,7 @@ class AllAction extends ProfileAction function showPageTitle() { - $user =& common_current_user(); + $user = common_current_user(); if ($user && ($user->id == $this->user->id)) { $this->element('h1', null, _("You and friends")); } else { diff --git a/actions/subscribers.php b/actions/subscribers.php index df9ec99615..cc9452820b 100644 --- a/actions/subscribers.php +++ b/actions/subscribers.php @@ -57,7 +57,7 @@ class SubscribersAction extends GalleryAction function showPageNotice() { - $user =& common_current_user(); + $user = common_current_user(); if ($user && ($user->id == $this->profile->id)) { $this->element('p', null, _('These are the people who listen to '. diff --git a/actions/subscriptions.php b/actions/subscriptions.php index cc7b38ee46..0dc5ee7624 100644 --- a/actions/subscriptions.php +++ b/actions/subscriptions.php @@ -59,7 +59,7 @@ class SubscriptionsAction extends GalleryAction function showPageNotice() { - $user =& common_current_user(); + $user = common_current_user(); if ($user && ($user->id == $this->profile->id)) { $this->element('p', null, _('These are the people whose notices '. diff --git a/actions/userbyid.php b/actions/userbyid.php index 86a61f20b3..ebff7e4a72 100644 --- a/actions/userbyid.php +++ b/actions/userbyid.php @@ -69,7 +69,7 @@ class UserbyidAction extends Action if (!$id) { $this->clientError(_('No id.')); } - $user =& User::staticGet($id); + $user = User::staticGet($id); if (!$user) { $this->clientError(_('No such user.')); } diff --git a/lib/schema.php b/lib/schema.php index df7cb65f56..a8ba91b87f 100644 --- a/lib/schema.php +++ b/lib/schema.php @@ -94,7 +94,7 @@ class Schema public function getTableDef($name) { - $res =& $this->conn->query('DESCRIBE ' . $name); + $res = $this->conn->query('DESCRIBE ' . $name); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -213,7 +213,7 @@ class Schema $sql .= "); "; - $res =& $this->conn->query($sql); + $res = $this->conn->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -234,7 +234,7 @@ class Schema public function dropTable($name) { - $res =& $this->conn->query("DROP TABLE $name"); + $res = $this->conn->query("DROP TABLE $name"); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -269,7 +269,7 @@ class Schema $name = "$table_".implode("_", $columnNames)."_idx"; } - $res =& $this->conn->query("ALTER TABLE $table ". + $res = $this->conn->query("ALTER TABLE $table ". "ADD INDEX $name (". implode(",", $columnNames).")"); @@ -291,7 +291,7 @@ class Schema public function dropIndex($table, $name) { - $res =& $this->conn->query("ALTER TABLE $table DROP INDEX $name"); + $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name"); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -314,7 +314,7 @@ class Schema { $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef); - $res =& $this->conn->query($sql); + $res = $this->conn->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -339,7 +339,7 @@ class Schema $sql = "ALTER TABLE $table MODIFY COLUMN " . $this->_columnSql($columndef); - $res =& $this->conn->query($sql); + $res = $this->conn->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -363,7 +363,7 @@ class Schema { $sql = "ALTER TABLE $table DROP COLUMN $columnName"; - $res =& $this->conn->query($sql); + $res = $this->conn->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); @@ -446,7 +446,7 @@ class Schema $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase); - $res =& $this->conn->query($sql); + $res = $this->conn->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); diff --git a/lib/util.php b/lib/util.php index 99a0a1db30..ab046e871d 100644 --- a/lib/util.php +++ b/lib/util.php @@ -127,7 +127,7 @@ function common_check_user($nickname, $password) if (0 == strcmp(common_munge_password($password, $user->id), $user->password)) { //internal checking passed - $authenticatedUser =& $user; + $authenticatedUser = $user; } } } diff --git a/plugins/OpenID/finishaddopenid.php b/plugins/OpenID/finishaddopenid.php index 6e889205d7..7cd9165231 100644 --- a/plugins/OpenID/finishaddopenid.php +++ b/plugins/OpenID/finishaddopenid.php @@ -80,7 +80,7 @@ class FinishaddopenidAction extends Action function tryLogin() { - $consumer =& oid_consumer(); + $consumer = oid_consumer(); $response = $consumer->complete(common_local_url('finishaddopenid')); @@ -103,7 +103,7 @@ class FinishaddopenidAction extends Action $sreg = $sreg_resp->contents(); } - $cur =& common_current_user(); + $cur = common_current_user(); $other = oid_get_user($canonical); diff --git a/scripts/fixup_utf8.php b/scripts/fixup_utf8.php index 5a9fba7c3f..30befadfd4 100755 --- a/scripts/fixup_utf8.php +++ b/scripts/fixup_utf8.php @@ -145,7 +145,7 @@ class UTF8FixerUpper echo "$id..."; - $result =& $this->dbu->execute($sth, array($content, $rendered, $id)); + $result = $this->dbu->execute($sth, array($content, $rendered, $id)); if (PEAR::isError($result)) { echo "ERROR: " . $result->getMessage() . "\n"; @@ -209,7 +209,7 @@ class UTF8FixerUpper echo "$id..."; - $result =& $this->dbu->execute($sth, array($fullname, $location, $bio, $id)); + $result = $this->dbu->execute($sth, array($fullname, $location, $bio, $id)); if (PEAR::isError($result)) { echo "ERROR: " . $result->getMessage() . "\n"; @@ -273,7 +273,7 @@ class UTF8FixerUpper echo "$id..."; - $result =& $this->dbu->execute($sth, array($fullname, $location, $description, $id)); + $result = $this->dbu->execute($sth, array($fullname, $location, $description, $id)); if (PEAR::isError($result)) { echo "ERROR: " . $result->getMessage() . "\n"; @@ -330,7 +330,7 @@ class UTF8FixerUpper echo "$id..."; - $result =& $this->dbu->execute($sth, array($content, $rendered, $id)); + $result = $this->dbu->execute($sth, array($content, $rendered, $id)); if (PEAR::isError($result)) { echo "ERROR: " . $result->getMessage() . "\n"; From 43a1a355241079da6bf355a996910b9d116bf105 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Thu, 3 Dec 2009 19:43:02 -0500 Subject: [PATCH 07/70] refactor the common parts of usermap and allmap into a common base class --- plugins/Mapstraction/MapstractionPlugin.php | 1 + plugins/Mapstraction/allmap.php | 125 ++------------ plugins/Mapstraction/map.php | 170 ++++++++++++++++++++ plugins/Mapstraction/usermap.php | 130 +-------------- 4 files changed, 189 insertions(+), 237 deletions(-) create mode 100644 plugins/Mapstraction/map.php diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index a0dbf52040..ca1a3bf209 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -90,6 +90,7 @@ class MapstractionPlugin extends Plugin { case 'AllmapAction': case 'UsermapAction': + case 'MapAction': include_once INSTALLDIR.'/plugins/Mapstraction/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; return false; default: diff --git a/plugins/Mapstraction/allmap.php b/plugins/Mapstraction/allmap.php index 3a78ac0d4b..0c4f03b31c 100644 --- a/plugins/Mapstraction/allmap.php +++ b/plugins/Mapstraction/allmap.php @@ -37,59 +37,26 @@ if (!defined('STATUSNET')) { * @category Mapstraction * @package StatusNet * @author Evan Prodromou + * @author Craig Andrews * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ -class AllmapAction extends OwnerDesignAction +class AllmapAction extends MapAction { - var $profile = null; - var $page = null; - var $notices = null; - - public $plugin = null; - function prepare($args) { - parent::prepare($args); - - $nickname_arg = $this->arg('nickname'); - $nickname = common_canonical_nickname($nickname_arg); - - // Permanent redirect on non-canonical nickname - - if ($nickname_arg != $nickname) { - $args = array('nickname' => $nickname); - if ($this->arg('page') && $this->arg('page') != 1) { - $args['page'] = $this->arg['page']; + if(parent::prepare($args)) { + $cur = common_current_user(); + if (!empty($cur) && $cur->id == $this->user->id) { + $this->notice = $this->user->noticeInbox(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); + } else { + $this->notice = $this->user->noticesWithFriends(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); } - common_redirect(common_local_url($this->trimmed('action'), $args), 301); + return true; + }else{ return false; } - - $this->user = User::staticGet('nickname', $nickname); - - if (!$this->user) { - $this->clientError(_('No such user.'), 404); - return false; - } - - $this->profile = $this->user->getProfile(); - - if (!$this->profile) { - $this->serverError(_('User has no profile.')); - return false; - } - - $page = $this->trimmed('page'); - - if (!empty($page) && Validate::number($page)) { - $this->page = $page+0; - } else { - $this->page = 1; - } - - return true; } function title() @@ -109,76 +76,4 @@ class AllmapAction extends OwnerDesignAction $this->page); } } - - function handle($args) - { - parent::handle($args); - $this->showPage(); - } - - function showContent() - { - $this->element('div', array('id' => 'map_canvas', - 'class' => 'gray smallmap', - 'style' => "width: 100%; height: 400px")); - } - - function showScripts() - { - parent::showScripts(); - $cur = common_current_user(); - if (!empty($cur) && $cur->id == $this->user->id) { - $notice = $this->user->noticeInbox(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - } else { - $notice = $this->user->noticesWithFriends(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - } - - $jsonArray = array(); - - while ($notice->fetch()) { - if (!empty($notice->lat) && !empty($notice->lon)) { - $jsonNotice = $this->noticeAsJson($notice); - $jsonArray[] = $jsonNotice; - } - } - - $this->elementStart('script', array('type' => 'text/javascript')); - $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); - $this->raw('showMapstraction($("#map_canvas"),_notices);'); - $this->raw('/*]]>*/'); // XHTML compat for Safari - $this->elementEnd('script'); - - return true; - } - - function noticeAsJson($notice) - { - // FIXME: this code should be abstracted to a neutral third - // party, like Notice::asJson(). I'm not sure of the ethics - // of refactoring from within a plugin, so I'm just abusing - // the ApiAction method. Don't do this unless you're me! - - require_once(INSTALLDIR.'/lib/api.php'); - - $act = new ApiAction('/dev/null'); - - $arr = $act->twitterStatusArray($notice, true); - $arr['url'] = $notice->bestUrl(); - $arr['html'] = $notice->rendered; - $arr['source'] = $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; - } - - $profile = $notice->getProfile(); - $arr['user']['profile_url'] = $profile->profileurl; - - return $arr; - } } diff --git a/plugins/Mapstraction/map.php b/plugins/Mapstraction/map.php new file mode 100644 index 0000000000..89723f43ce --- /dev/null +++ b/plugins/Mapstraction/map.php @@ -0,0 +1,170 @@ +. + * + * @category Mapstraction + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Show a map of notices + * + * @category Mapstraction + * @package StatusNet + * @author Evan Prodromou + * @author Craig Andrews + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class MapAction extends OwnerDesignAction +{ + var $profile = null; + var $page = null; + var $notices = null; + + function prepare($args) + { + parent::prepare($args); + + $nickname_arg = $this->arg('nickname'); + $nickname = common_canonical_nickname($nickname_arg); + + // Permanent redirect on non-canonical nickname + + if ($nickname_arg != $nickname) { + $args = array('nickname' => $nickname); + if ($this->arg('page') && $this->arg('page') != 1) { + $args['page'] = $this->arg['page']; + } + common_redirect(common_local_url($this->trimmed('action'), $args), 301); + return false; + } + + $this->user = User::staticGet('nickname', $nickname); + + if (!$this->user) { + $this->clientError(_('No such user.'), 404); + return false; + } + + $this->profile = $this->user->getProfile(); + + if (!$this->profile) { + $this->serverError(_('User has no profile.')); + return false; + } + + $page = $this->trimmed('page'); + + if (!empty($page) && Validate::number($page)) { + $this->page = $page+0; + } else { + $this->page = 1; + } + + $this->notices = empty($this->tag) + ? $this->user->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1) + : $this->user->getTaggedNotices($this->tag, ($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1, 0, 0, null); + + return true; + } + + function handle($args) + { + parent::handle($args); + $this->showPage(); + } + + function showContent() + { + $this->element('div', array('id' => 'map_canvas', + 'class' => 'gray smallmap', + 'style' => "width: 100%; height: 400px")); + } + + /** + * Hook for adding extra JavaScript + * + * @param Action $action Action object for the page + * + * @return boolean event handler return + */ + + function showScripts() + { + parent::showScripts(); + $jsonArray = array(); + + while ($this->notice->fetch()) { + if (!empty($this->notice->lat) && !empty($this->notice->lon)) { + $jsonNotice = $this->noticeAsJson($this->notice); + $jsonArray[] = $jsonNotice; + } + } + + $this->elementStart('script', array('type' => 'text/javascript')); + $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); + $this->raw('showMapstraction($("#map_canvas"),_notices);'); + $this->raw('/*]]>*/'); // XHTML compat for Safari + $this->elementEnd('script'); + + return true; + } + + function noticeAsJson($notice) + { + // FIXME: this code should be abstracted to a neutral third + // party, like Notice::asJson(). I'm not sure of the ethics + // of refactoring from within a plugin, so I'm just abusing + // the ApiAction method. Don't do this unless you're me! + + require_once(INSTALLDIR.'/lib/api.php'); + + $act = new ApiAction('/dev/null'); + + $arr = $act->twitterStatusArray($notice, true); + $arr['url'] = $notice->bestUrl(); + $arr['html'] = $notice->rendered; + $arr['source'] = $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; + } + + $profile = $notice->getProfile(); + $arr['user']['profile_url'] = $profile->profileurl; + + return $arr; + } +} diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php index afa48b1629..3e517ee864 100644 --- a/plugins/Mapstraction/usermap.php +++ b/plugins/Mapstraction/usermap.php @@ -37,61 +37,24 @@ if (!defined('STATUSNET')) { * @category Mapstraction * @package StatusNet * @author Evan Prodromou + * @author Craig Andrews * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ -class UsermapAction extends OwnerDesignAction +class UsermapAction extends MapAction { - var $profile = null; - var $page = null; - var $notices = null; - - public $plugin = null; function prepare($args) { - parent::prepare($args); - - $nickname_arg = $this->arg('nickname'); - $nickname = common_canonical_nickname($nickname_arg); - - // Permanent redirect on non-canonical nickname - - if ($nickname_arg != $nickname) { - $args = array('nickname' => $nickname); - if ($this->arg('page') && $this->arg('page') != 1) { - $args['page'] = $this->arg['page']; - } - common_redirect(common_local_url($this->trimmed('action'), $args), 301); + if(parent::prepare($args)) { + $this->notice = empty($this->tag) + ? $this->user->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1) + : $this->user->getTaggedNotices($this->tag, ($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1, 0, 0, null); + return true; + }else{ return false; } - - $this->user = User::staticGet('nickname', $nickname); - - if (!$this->user) { - $this->clientError(_('No such user.'), 404); - return false; - } - - $this->profile = $this->user->getProfile(); - - if (!$this->profile) { - $this->serverError(_('User has no profile.')); - return false; - } - - $page = $this->trimmed('page'); - - if (!empty($page) && Validate::number($page)) { - $this->page = $page+0; - } else { - $this->page = 1; - } - - $this->notices = $this->user->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); - - return true; } function title() @@ -110,81 +73,4 @@ class UsermapAction extends OwnerDesignAction $this->page); } } - - function handle($args) - { - parent::handle($args); - $this->showPage(); - } - - function showContent() - { - $this->element('div', array('id' => 'map_canvas', - 'class' => 'gray smallmap', - 'style' => "width: 100%; height: 400px")); - } - - /** - * Hook for adding extra JavaScript - * - * @param Action $action Action object for the page - * - * @return boolean event handler return - */ - - function showScripts() - { - parent::showScripts(); - $notice = empty($this->tag) - ? $this->user->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1) - : $this->user->getTaggedNotices($this->tag, ($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1, 0, 0, null); - - $jsonArray = array(); - - while ($notice->fetch()) { - if (!empty($notice->lat) && !empty($notice->lon)) { - $jsonNotice = $this->noticeAsJson($notice); - $jsonArray[] = $jsonNotice; - } - } - - $this->elementStart('script', array('type' => 'text/javascript')); - $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); - $this->raw('showMapstraction($("#map_canvas"),_notices);'); - $this->raw('/*]]>*/'); // XHTML compat for Safari - $this->elementEnd('script'); - - return true; - } - - function noticeAsJson($notice) - { - // FIXME: this code should be abstracted to a neutral third - // party, like Notice::asJson(). I'm not sure of the ethics - // of refactoring from within a plugin, so I'm just abusing - // the ApiAction method. Don't do this unless you're me! - - require_once(INSTALLDIR.'/lib/api.php'); - - $act = new ApiAction('/dev/null'); - - $arr = $act->twitterStatusArray($notice, true); - $arr['url'] = $notice->bestUrl(); - $arr['html'] = $notice->rendered; - $arr['source'] = $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; - } - - $profile = $notice->getProfile(); - $arr['user']['profile_url'] = $profile->profileurl; - - return $arr; - } } From 35ff3961e8a51e41517d8a8b9e5a1a21f826e4ca Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Thu, 3 Dec 2009 19:59:31 -0500 Subject: [PATCH 08/70] Remove unnecessary pass by reference indicators --- plugins/Mapstraction/MapstractionPlugin.php | 4 ++-- plugins/UserFlag/UserFlagPlugin.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index ca1a3bf209..c4f9cd77de 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -58,12 +58,12 @@ class MapstractionPlugin extends Plugin * * The way to register new actions from a plugin. * - * @param Router &$m reference to router + * @param Router $m reference to router * * @return boolean event handler return */ - function onRouterInitialized(&$m) + function onRouterInitialized($m) { $m->connect(':nickname/all/map', array('action' => 'allmap'), diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php index 60c0c2c0ac..e13c2555aa 100644 --- a/plugins/UserFlag/UserFlagPlugin.php +++ b/plugins/UserFlag/UserFlagPlugin.php @@ -68,7 +68,7 @@ class UserFlagPlugin extends Plugin return true; } - function onRouterInitialized(&$m) { + function onRouterInitialized($m) { $m->connect('main/flag/profile', array('action' => 'flagprofile')); $m->connect('admin/profile/flag', array('action' => 'adminprofileflag')); return true; From aef4cc0a59276938f0f0aec4d67374f578f2117a Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Thu, 3 Dec 2009 17:06:58 -0800 Subject: [PATCH 09/70] Make it impossible to block (and thus unsubscribe from your self-subscription) via the API. Additionally, make it impossible to block yourself or unsubscribe from yourself, period. I also made User use the subs.php helper function for unsubscribing during a block. Hopefully, these changes will get rid of the problem of people accidentally deleting their self-subscriptions once and for all (knock on wood). --- actions/apiblockcreate.php | 11 +++++++++++ classes/User.php | 34 ++++++++++++++++++++++++++-------- lib/subs.php | 6 ++++++ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/actions/apiblockcreate.php b/actions/apiblockcreate.php index 4f941f6c32..e79dec32d0 100644 --- a/actions/apiblockcreate.php +++ b/actions/apiblockcreate.php @@ -98,6 +98,17 @@ class ApiBlockCreateAction extends ApiAuthAction return; } + // Don't allow blocking yourself! + + if ($this->user->id == $this->other->id) { + $this->clientError( + _("You cannot block yourself!"), + 403, + $this->format + ); + return; + } + if ($this->user->hasBlocked($this->other) || $this->user->block($this->other) ) { diff --git a/classes/User.php b/classes/User.php index f905ea2b72..4838fe1c7d 100644 --- a/classes/User.php +++ b/classes/User.php @@ -502,6 +502,19 @@ class User extends Memcached_DataObject { // Add a new block record + // no blocking (and thus unsubbing from) yourself + + if ($this->id == $other->id) { + common_log(LOG_WARNING, + sprintf( + "Profile ID %d (%s) tried to block his or herself.", + $profile->id, + $profile->nickname + ) + ); + return false; + } + $block = new Profile_block(); // Begin a transaction @@ -520,15 +533,20 @@ class User extends Memcached_DataObject // Cancel their subscription, if it exists - $sub = Subscription::pkeyGet(array('subscriber' => $other->id, - 'subscribed' => $this->id)); + $result = subs_unsubscribe_to($this, $other); - if ($sub) { - $result = $sub->delete(); - if (!$result) { - common_log_db_error($sub, 'DELETE', __FILE__); - return false; - } + if ($result !== true) { + common_log(LOG_WARNING, + sprintf( + "Error trying to unsubscribe profile ID %d (%s) from user ID %d (%s): %s", + $other->id, + $other->nickname, + $this->id, + $this->nickname, + $result + ) + ); + return false; } $block->query('COMMIT'); diff --git a/lib/subs.php b/lib/subs.php index 2fc3160dec..4b6b03967a 100644 --- a/lib/subs.php +++ b/lib/subs.php @@ -127,6 +127,12 @@ function subs_unsubscribe_to($user, $other) if (!$user->isSubscribed($other)) return _('Not subscribed!'); + // Don't allow deleting self subs + + if ($user->id == $other->id) { + return _('Couldn\'t delete self-subscription.'); + } + $sub = DB_DataObject::factory('subscription'); $sub->subscriber = $user->id; From d2b42577de54204d83eb8eac565c25edd4205542 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Thu, 3 Dec 2009 17:44:34 -0800 Subject: [PATCH 10/70] Was deleting wrong subscription during block. Now deletes the blockee's sub if it exists. --- classes/User.php | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/classes/User.php b/classes/User.php index 4838fe1c7d..2a4fab7d43 100644 --- a/classes/User.php +++ b/classes/User.php @@ -533,21 +533,7 @@ class User extends Memcached_DataObject // Cancel their subscription, if it exists - $result = subs_unsubscribe_to($this, $other); - - if ($result !== true) { - common_log(LOG_WARNING, - sprintf( - "Error trying to unsubscribe profile ID %d (%s) from user ID %d (%s): %s", - $other->id, - $other->nickname, - $this->id, - $this->nickname, - $result - ) - ); - return false; - } + subs_unsubscribe_to($other->getUser(),$this->getProfile()); $block->query('COMMIT'); From 40afc7e9877855272caa5c65fb3575e4420b2966 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 01:57:14 -0500 Subject: [PATCH 11/70] Add 4 new events: StartCssLinkElement, EndCssLinkElement, StartScriptElement, EndScriptElement --- EVENTS.txt | 21 +++++++++++++++++++++ lib/htmloutputter.php | 42 ++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/EVENTS.txt b/EVENTS.txt index 34a222e8f3..f4ec620338 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -574,3 +574,24 @@ EndShortenUrl: After a URL has been shortened - $shortenerName: name of the requested shortener - $shortenedUrl: short version of the url +StartCssLinkElement: Before a element is written +- $action +- &$src +- &$theme +- &$media + +EndCssLinkElement: After a element is written +- $action +- $src +- $theme +- $media + +StartScriptElement: Before a element is written +- $action +- &$src +- &$type + +EndScriptElement: After a element is written +- $action +- $src +- $type diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index d267526c88..a7c596917c 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -350,14 +350,17 @@ class HTMLOutputter extends XMLOutputter */ function script($src, $type='text/javascript') { - $url = parse_url($src); - if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) - { - $src = common_path($src) . '?version=' . STATUSNET_VERSION; + if(Event::handle('StartScriptElement', array($this,&$src,&$type))) { + $url = parse_url($src); + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) + { + $src = common_path($src) . '?version=' . STATUSNET_VERSION; + } + $this->element('script', array('type' => $type, + 'src' => $src), + ' '); + Event::handle('EndScriptElement', array($this,$src,$type)); } - $this->element('script', array('type' => $type, - 'src' => $src), - ' '); } /** @@ -371,19 +374,22 @@ class HTMLOutputter extends XMLOutputter */ function cssLink($src,$theme=null,$media=null) { - $url = parse_url($src); - if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) - { - if(file_exists(Theme::file($src,$theme))){ - $src = Theme::path($src, $theme) . '?version=' . STATUSNET_VERSION; - }else{ - $src = common_path($src); + if(Event::handle('StartCssLinkElement', array($this,&$src,&$theme,&$media))) { + $url = parse_url($src); + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) + { + if(file_exists(Theme::file($src,$theme))){ + $src = Theme::path($src, $theme) . '?version=' . STATUSNET_VERSION; + }else{ + $src = common_path($src); + } } + $this->element('link', array('rel' => 'stylesheet', + 'type' => 'text/css', + 'href' => $src, + 'media' => $media)); + Event::handle('EndCssLinkElement', array($this,$src,$theme,$media)); } - $this->element('link', array('rel' => 'stylesheet', - 'type' => 'text/css', - 'href' => $src, - 'media' => $media)); } /** From 01b089d9be046db1253cb3bb90e8635b50fddd84 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 12:36:00 -0500 Subject: [PATCH 12/70] Added minify plugin --- plugins/Minify/MinifyPlugin.php | 101 + plugins/Minify/README | 20 + plugins/Minify/extlib/minify/HISTORY.txt | 75 + plugins/Minify/extlib/minify/LICENSE.txt | 26 + plugins/Minify/extlib/minify/README.txt | 53 + plugins/Minify/extlib/minify/UPGRADING.txt | 35 + plugins/Minify/extlib/minify/min/README.txt | 132 + .../extlib/minify/min/builder/_index.js | 242 ++ .../Minify/extlib/minify/min/builder/bm.js | 36 + .../extlib/minify/min/builder/index.php | 182 + .../extlib/minify/min/builder/ocCheck.php | 36 + .../extlib/minify/min/builder/rewriteTest.js | 1 + .../Minify/extlib/minify/min/groupsConfig.php | 34 + plugins/Minify/extlib/minify/min/index.php | 66 + .../Minify/extlib/minify/min/lib/FirePHP.php | 1370 +++++++ .../minify/min/lib/HTTP/ConditionalGet.php | 348 ++ .../extlib/minify/min/lib/HTTP/Encoder.php | 326 ++ .../Minify/extlib/minify/min/lib/JSMin.php | 314 ++ .../extlib/minify/min/lib/JSMinPlus.php | 1872 +++++++++ .../Minify/extlib/minify/min/lib/Minify.php | 532 +++ .../extlib/minify/min/lib/Minify/Build.php | 103 + .../extlib/minify/min/lib/Minify/CSS.php | 83 + .../minify/min/lib/Minify/CSS/Compressor.php | 250 ++ .../minify/min/lib/Minify/CSS/UriRewriter.php | 270 ++ .../minify/min/lib/Minify/Cache/APC.php | 130 + .../minify/min/lib/Minify/Cache/File.php | 125 + .../minify/min/lib/Minify/Cache/Memcache.php | 137 + .../min/lib/Minify/CommentPreserver.php | 90 + .../minify/min/lib/Minify/Controller/Base.php | 202 + .../min/lib/Minify/Controller/Files.php | 78 + .../min/lib/Minify/Controller/Groups.php | 94 + .../min/lib/Minify/Controller/MinApp.php | 132 + .../minify/min/lib/Minify/Controller/Page.php | 82 + .../min/lib/Minify/Controller/Version1.php | 118 + .../extlib/minify/min/lib/Minify/HTML.php | 245 ++ .../minify/min/lib/Minify/ImportProcessor.php | 157 + .../extlib/minify/min/lib/Minify/Lines.php | 131 + .../extlib/minify/min/lib/Minify/Logger.php | 45 + .../extlib/minify/min/lib/Minify/Packer.php | 37 + .../extlib/minify/min/lib/Minify/Source.php | 187 + .../minify/min/lib/Minify/YUICompressor.php | 139 + .../extlib/minify/min/lib/Solar/Dir.php | 199 + plugins/Minify/extlib/minify/min/utils.php | 90 + .../min_unit_tests/HTTP_ConditionalGet/2.php | 44 + .../min_unit_tests/HTTP_ConditionalGet/3.php | 40 + .../min_unit_tests/HTTP_ConditionalGet/4.php | 49 + .../min_unit_tests/HTTP_ConditionalGet/5.php | 27 + .../HTTP_ConditionalGet/_include.php | 64 + .../HTTP_ConditionalGet/index.php | 36 + .../min_unit_tests/HTTP_Encoder/green.png | Bin 0 -> 202 bytes .../min_unit_tests/HTTP_Encoder/index.php | 60 + .../extlib/minify/min_unit_tests/_inc.php | 50 + .../_test_files/css/comments.css | 9 + .../_test_files/css/comments.min.css | 3 + .../min_unit_tests/_test_files/css/hacks.css | 66 + .../_test_files/css/hacks.min.css | 4 + .../_test_files/css/issue62.css | 890 +++++ .../_test_files/css/issue62.min.css | 25 + .../_test_files/css/paths_prepend.css | 12 + .../_test_files/css/paths_prepend.min.css | 1 + .../_test_files/css/paths_rewrite.css | 14 + .../_test_files/css/paths_rewrite.min.css | 1 + .../min_unit_tests/_test_files/css/readme.txt | 1 + .../_test_files/css/selectors.css | 42 + .../_test_files/css/selectors.min.css | 37 + .../min_unit_tests/_test_files/css/styles.css | 31 + .../_test_files/css/styles.min.css | 3 + .../_test_files/css/subsilver.css | 434 +++ .../_test_files/css/subsilver.min.css | 18 + .../_test_files/css/unusual_strings.css | 10 + .../_test_files/css/unusual_strings.min.css | 2 + .../_test_files/css/vladmirated.css | 658 ++++ .../_test_files/css/vladmirated.min.css | 79 + .../_test_files/css_uriRewriter/exp.css | 14 + .../_test_files/css_uriRewriter/in.css | 14 + .../_test_files/html/before.html | 96 + .../_test_files/html/before.min.html | 36 + .../_test_files/html/before2.html | 95 + .../_test_files/html/before2.min.html | 36 + .../importProcessor/1/adjacent.css | 3 + .../_test_files/importProcessor/1/tv.css | 4 + .../_test_files/importProcessor/adjacent.css | 4 + .../_test_files/importProcessor/input.css | 4 + .../_test_files/importProcessor/output.css | 48 + .../min_unit_tests/_test_files/js/before.js | 57 + .../_test_files/js/before.min.js | 22 + .../_test_files/js/before.min_plus.js | 22 + .../min_unit_tests/_test_files/js/condcomm.js | 14 + .../_test_files/js/condcomm.min_plus.js | 13 + .../min_unit_tests/_test_files/js/issue74.js | 4 + .../_test_files/js/issue74.min.js | 1 + .../_test_files/js/issue74.min_plus.js | 1 + .../_test_files/js/jquery-1.2.3.js | 3408 +++++++++++++++++ .../_test_files/minify/QueryString.js | 168 + .../_test_files/minify/email.js | 24 + .../_test_files/minify/issue73_1.js | 2 + .../_test_files/minify/issue73_2.js | 3 + .../_test_files/minify/issue89_1.css | 7 + .../_test_files/minify/issue89_2.css | 7 + .../_test_files/minify/issue89_out.min.css | 1 + .../_test_files/minify/lines_bugs.js | 2 + .../_test_files/minify/lines_output.js | 280 ++ .../_test_files/minify/minified.css | 5 + .../_test_files/minify/minified.js | 12 + .../test_HTTP_ConditionalGet.php | 137 + .../min_unit_tests/test_HTTP_Encoder.php | 260 ++ .../minify/min_unit_tests/test_JSMin.php | 63 + .../minify/min_unit_tests/test_JSMinPlus.php | 80 + .../minify/min_unit_tests/test_Minify.php | 213 ++ .../min_unit_tests/test_Minify_Build.php | 36 + .../minify/min_unit_tests/test_Minify_CSS.php | 53 + .../test_Minify_CSS_UriRewriter.php | 56 + .../min_unit_tests/test_Minify_Cache_APC.php | 33 + .../min_unit_tests/test_Minify_Cache_File.php | 54 + .../test_Minify_Cache_Memcache.php | 38 + .../test_Minify_CommentPreserver.php | 37 + .../min_unit_tests/test_Minify_HTML.php | 59 + .../test_Minify_ImportProcessor.php | 48 + .../min_unit_tests/test_Minify_Lines.php | 36 + .../extlib/minify/min_unit_tests/test_all.php | 17 + .../min_unit_tests/test_environment.php | 100 + .../min_unit_tests/test_js_in_browser.html | 4 + plugins/Minify/minify.php | 122 + 123 files changed, 17488 insertions(+) create mode 100644 plugins/Minify/MinifyPlugin.php create mode 100644 plugins/Minify/README create mode 100644 plugins/Minify/extlib/minify/HISTORY.txt create mode 100644 plugins/Minify/extlib/minify/LICENSE.txt create mode 100644 plugins/Minify/extlib/minify/README.txt create mode 100644 plugins/Minify/extlib/minify/UPGRADING.txt create mode 100644 plugins/Minify/extlib/minify/min/README.txt create mode 100644 plugins/Minify/extlib/minify/min/builder/_index.js create mode 100644 plugins/Minify/extlib/minify/min/builder/bm.js create mode 100644 plugins/Minify/extlib/minify/min/builder/index.php create mode 100644 plugins/Minify/extlib/minify/min/builder/ocCheck.php create mode 100644 plugins/Minify/extlib/minify/min/builder/rewriteTest.js create mode 100644 plugins/Minify/extlib/minify/min/groupsConfig.php create mode 100644 plugins/Minify/extlib/minify/min/index.php create mode 100644 plugins/Minify/extlib/minify/min/lib/FirePHP.php create mode 100644 plugins/Minify/extlib/minify/min/lib/HTTP/ConditionalGet.php create mode 100644 plugins/Minify/extlib/minify/min/lib/HTTP/Encoder.php create mode 100644 plugins/Minify/extlib/minify/min/lib/JSMin.php create mode 100644 plugins/Minify/extlib/minify/min/lib/JSMinPlus.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Build.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/CSS.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/CSS/Compressor.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/CSS/UriRewriter.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Cache/APC.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Cache/File.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Cache/Memcache.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/CommentPreserver.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/Base.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/Files.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/Groups.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/MinApp.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/Page.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Controller/Version1.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/HTML.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/ImportProcessor.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Lines.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Logger.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Packer.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/Source.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Minify/YUICompressor.php create mode 100644 plugins/Minify/extlib/minify/min/lib/Solar/Dir.php create mode 100644 plugins/Minify/extlib/minify/min/utils.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/index.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_inc.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/QueryString.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/email.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_1.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_2.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_1.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_2.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_out.min.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_bugs.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_output.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.css create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.js create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_ConditionalGet.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_Encoder.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMin.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMinPlus.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Build.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS_UriRewriter.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_APC.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_File.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_Memcache.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CommentPreserver.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_HTML.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_ImportProcessor.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Lines.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_all.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_environment.php create mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_js_in_browser.html create mode 100644 plugins/Minify/minify.php diff --git a/plugins/Minify/MinifyPlugin.php b/plugins/Minify/MinifyPlugin.php new file mode 100644 index 0000000000..4d37fbc708 --- /dev/null +++ b/plugins/Minify/MinifyPlugin.php @@ -0,0 +1,101 @@ + +Author URI: http://candrews.integralblue.com/ +*/ + +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/** + * @package MinifyPlugin + * @maintainer Craig Andrews + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +class MinifyPlugin extends Plugin +{ + + /** + * Add Minification related paths to the router table + * + * Hook for RouterInitialized event. + * + * @return boolean hook return + */ + + function onStartInitializeRouter($m) + { + $m->connect('main/min', + array('action' => 'minify')); + return true; + } + + function onAutoload($cls) + { + switch ($cls) + { + case 'MinifyAction': + require_once(INSTALLDIR.'/plugins/Minify/' . strtolower(mb_substr($cls, 0, -6)) . '.php'); + return false; + default: + return true; + } + } + + function onLoginAction($action, &$login) + { + switch ($action) + { + case 'minify': + $login = true; + return false; + default: + return true; + } + } + + function onStartScriptElement($action,&$src,&$type) { + $url = parse_url($src); + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) + { + $src = common_path('main/min?f='.$src.'&v=' . STATUSNET_VERSION); + } + } + + function onStartCssLinkElement($action,&$src,&$theme,&$media) { + $url = parse_url($src); + if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) + { + if(file_exists(Theme::file($src,$theme))){ + //src is a relative path, so we can do minification + if(isset($theme)) { + $src = common_path('main/min?f=theme/'.$theme.'/'.$src.'&v=' . STATUSNET_VERSION); + } else { + $src = common_path('main/min?f=theme/default/'.$src.'&v=' . STATUSNET_VERSION); + } + } + } + } +} + diff --git a/plugins/Minify/README b/plugins/Minify/README new file mode 100644 index 0000000000..7fb7e239a3 --- /dev/null +++ b/plugins/Minify/README @@ -0,0 +1,20 @@ +The Minify plugin minifies your CSS and Javascript, removing whitespace and comments. + +Note that if enabled this plugin and use a theme server + ($config['theme']['server']), your theme server will not be used. + +Installation +============ +add "addPlugin('minify', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +Settings +======== +None at the moment + +Example +======= + +addPlugin('minify', array()); + diff --git a/plugins/Minify/extlib/minify/HISTORY.txt b/plugins/Minify/extlib/minify/HISTORY.txt new file mode 100644 index 0000000000..95a46c87ec --- /dev/null +++ b/plugins/Minify/extlib/minify/HISTORY.txt @@ -0,0 +1,75 @@ +Minify Release History + +Version 2.1.3 + * HTTP fixes + * ETag generation now valid (different when gzipped) + * Vary header always sent when Accept-Encoding is sniffed + * Cache-Control no longer has "must-revalidate" due to webkit bug + See: http://mrclay.org/index.php/2009/02/24/safari-4-beta-cache-controlmust-revalidate-bug/ + * Dropped deflate encoding. Browser and proxy support could be buggy. + See: http://stackoverflow.com/questions/883841/ + * File cache now works w/o setting $min_cachePath + * Allow setting contentType in Minify_Source objects + * No more 5.3 deprecation warnings: split() removed + +Version 2.1.2 + * Javascript fixes + * Debug mode no longer confused by "*/*" in strings/RegExps (jQuery) + * quote characters inside RegExp literals no longer cause exception + * files ending in single-line comments no longer cause code loss + * CSS: data: URLs no longer mangled + * Optional error logging to Firefox's FirePHP extension + * Unit tests to check for common DOCUMENT_ROOT problems + * DOCUMENT_ROOT no longer overwritten on IIS servers + * Builder app doesn't fail on systems without gzdeflate() + * APC caching class included + +Version 2.1.1 + * Bug fix release + * Detection and workarounds for zlib.output_compression and non-PHP encoding modules + * Zlib not required (mod_rewrite, et.al., can still be used for encoding) + * HTML : More IE conditional comments preserved + * Minify_groupUri() utility fixed + +Version 2.1.0 + * "min" default application for quick deployment + * Minify URI Builder app & bookmarklet for quickly creating minify URIs + * Relative URIs in CSS file are fixed automatically by default + * "debug" mode for revealing original line #s in combined files + * Better IIS support + * Improved minifier classes: + * JS: preserves IE conditional comments + * CSS: smaller output, preserves more hacks and valid CSS syntax, + shorter line lengths, other bug fixes + * HTML: smaller output, shorter line lengths, other bug fixes + * Default Cache-Control: max-age of 30 minutes + * Conditional GETs supported even when max-age sent + * Experimental memcache cache class (default is files) + * Minify_Cache_File has flock()s (by default) + * Workaround for Windows mtime reporting bug + +Version 2.0.2 beta (2008-06-24) + * Fast new cache system. Cached files served almost 3x as fast. + * Dropped support of compress encoding (though HTTP_Encoder still supports it) + +Version 2.0.1 (2008-05-31) + * E_STRICT compliance (Cache_Lite_File). + +Version 2.0.0 (2008-05-22) + * Complete code overhaul. Minify is now a PEAR-style class and toolkit + for building customized minifying file servers. + * Content-Encoding: deflate/gzip/compress, based on request headers + * Expanded CSS and HTML minifiers with test cases + * Easily plug-in 3rd-party minifiers (like Packer) + * Plug-able front end controller allows changing the way files are chosen + * Compression & encoding modules lazy-loaded as needed (304 responses use + use minimal code) + * Separate utility classes for HTTP encoding and cache control + +Version 1.0.1 (2007-05-05) + * Fixed various problems resolving pathnames when hosted on an NFS mount. + * Fixed 'undefined constant' notice. + * Replaced old JSMin library with a much faster custom implementation. + +Version 1.0.0 (2007-05-02) + * First release. \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/LICENSE.txt b/plugins/Minify/extlib/minify/LICENSE.txt new file mode 100644 index 0000000000..8f008adb56 --- /dev/null +++ b/plugins/Minify/extlib/minify/LICENSE.txt @@ -0,0 +1,26 @@ +Copyright (c) 2008 Ryan Grove +Copyright (c) 2008 Steve Clay +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 this project 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. diff --git a/plugins/Minify/extlib/minify/README.txt b/plugins/Minify/extlib/minify/README.txt new file mode 100644 index 0000000000..3899b99536 --- /dev/null +++ b/plugins/Minify/extlib/minify/README.txt @@ -0,0 +1,53 @@ +WELCOME TO MINIFY 2.1! + +Minify is an HTTP content server. It compresses sources of content +(usually files), combines the result and serves it with appropriate +HTTP headers. These headers can allow clients to perform conditional +GETs (serving content only when clients do not have a valid cache) +and tell clients to cache the file for a period of time. +More info: http://code.google.com/p/minify/ + + +UPGRADING + +See UPGRADING.txt for instructions. + + +INSTALLATION AND USAGE: + +1. Place the /min/ directory as a child of your DOCUMENT_ROOT +directory: i.e. you will have: /home/user/www/public_html/min + +2. Open http://yourdomain/min/ in a web browser. This will forward +you to the Minify URI Builder application, which will help you +quickly start using Minify to serve content on your site. + + +UNIT TESTING: + +1. Place the /min_unit_tests/ directory as a child of your DOCUMENT_ROOT +directory: i.e. you will have: /home/user/www/public_html/min_unit_tests + +2. To run unit tests, access: http://yourdomain/min_unit_tests/test_all.php + +(If you wish, the other test_*.php files can be run to test individual +components with more verbose output.) + +3. Remove /min_unit_tests/ from your DOCUMENT_ROOT when you are done. + + +EXTRAS: + +The min_extras folder contains files for benchmarking using Apache ab on Windows +and a couple single-use tools. DO NOT place this on your production server. + + +FILE ENCODINGS + +Minify *should* work fine with files encoded in UTF-8 or other 8-bit +encodings like ISO 8859/Windows-1252. By default Minify appends +";charset=utf-8" to the Content-Type headers it sends. + +Leading UTF-8 BOMs are stripped from all sources to prevent +duplication in output files, and files are converted to Unix newlines. + diff --git a/plugins/Minify/extlib/minify/UPGRADING.txt b/plugins/Minify/extlib/minify/UPGRADING.txt new file mode 100644 index 0000000000..5025faf9b7 --- /dev/null +++ b/plugins/Minify/extlib/minify/UPGRADING.txt @@ -0,0 +1,35 @@ +Minify Upgrade Guide + +UPGRADING FROM 2.1.* + +1. Rename the following files: + + /min/config.php --> /min/old_config.php + /min/groupsConfig.php --> /min/old_groupsConfig.php + +2. Overwrite all files in /min (and /min_unit_tests) with those from this zip. + +3. Delete /min/groupsConfig.php + +4. Rename /min/old_groupsConfig.php --> /min/groupsConfig.php + +5. Merge your settings in old_config.php into config.php. + + * If you've set $_SERVER['DOCUMENT_ROOT'], instead set the new option + $min_documentRoot. This is advantageous on IIS systems because Minify + will no longer overwrite the path you specified. + + * $min_errorLogger adds the ability to enable FirePHP logging. + +6. (optional) Delete /min/old_config.php and the Minify files from your cache + directory (specified in $min_cachePath). + + +INSTALLING FRESH + +See README.txt for instructions on installing this app for the first time. + + +SUPPORT + +Send a message to http://groups.google.com/group/minify \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/README.txt b/plugins/Minify/extlib/minify/min/README.txt new file mode 100644 index 0000000000..a7cf774a18 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/README.txt @@ -0,0 +1,132 @@ +The files in this directory represent the default Minify setup designed to ease +integration with your site. This app will combine and minify your Javascript or +CSS files and serve them with HTTP compression and cache headers. + + +RECOMMENDED + +It's recommended to edit config.php to set $min_cachePath to a writeable +(by PHP) directory on your system. This will improve performance. + + +GETTING STARTED + +The quickest way to get started is to use the Minify URI Builder application +on your website: http://example.com/min/builder/ + + +MINIFYING A SINGLE FILE + +Let's say you want to serve this file: + http://example.com/wp-content/themes/default/default.css + +Here's the "Minify URL" for this file: + http://example.com/min/?f=wp-content/themes/default/default.css + +In other words, the "f" argument is set to the file path from root without the +initial "/". As CSS files may contain relative URIs, Minify will automatically +"fix" these by rewriting them as root relative. + + +COMBINING MULTIPLE FILES IN ONE DOWNLOAD + +Separate the paths given to "f" with commas. + +Let's say you have CSS files at these URLs: + http://example.com/scripts/jquery-1.2.6.js + http://example.com/scripts/site.js + +You can combine these files through Minify by requesting this URL: + http://example.com/min/?f=scripts/jquery-1.2.6.js,scripts/site.js + + +SIMPLIFYING URLS WITH A BASE PATH + +If you're combining files that share the same ancestor directory, you can use +the "b" argument to set the base directory for the "f" argument. Do not include +the leading or trailing "/" characters. + +E.g., the following URLs will serve the exact same content: + http://example.com/min/?f=scripts/jquery-1.2.6.js,scripts/site.js,scripts/home.js + http://example.com/min/?b=scripts&f=jquery-1.2.6.js,site.js,home.js + + +MINIFY URLS IN HTML + +In (X)HTML files, don't forget to replace any "&" characters with "&". + + +SPECIFYING ALLOWED DIRECTORIES + +By default, Minify will serve any *.css/*.js files within the DOCUMENT_ROOT. If +you'd prefer to limit Minify's access to certain directories, set the +$min_serveOptions['minApp']['allowDirs'] array in config.php. E.g. to limit +to the /js and /themes/default directories, use: + +$min_serveOptions['minApp']['allowDirs'] = array('//js', '//themes/default'); + + +GROUPS: FASTER PERFORMANCE AND BETTER URLS + +For the best performance, edit groupsConfig.php to pre-specify groups of files +to be combined under preset keys. E.g., here's an example configuration in +groupsConfig.php: + +return array( + 'js' => array('//js/Class.js', '//js/email.js') +); + +This pre-selects the following files to be combined under the key "js": + http://example.com/js/Class.js + http://example.com/js/email.js + +You can now serve these files with this simple URL: + http://example.com/min/?g=js + + +GROUPS: SPECIFYING FILES OUTSIDE THE DOC_ROOT + +In the groupsConfig.php array, the "//" in the file paths is a shortcut for +the DOCUMENT_ROOT, but you can also specify paths from the root of the filesystem +or relative to the DOC_ROOT: + +return array( + 'js' => array( + '//js/file.js' // file within DOC_ROOT + ,'//../file.js' // file in parent directory of DOC_ROOT + ,'C:/Users/Steve/file.js' // file anywhere on filesystem + ) +); + + +FAR-FUTURE EXPIRES HEADERS + +Minify can send far-future (one year) Expires headers. To enable this you must +add a number to the querystring (e.g. /min/?g=js&1234 or /min/f=file.js&1234) +and alter it whenever a source file is changed. If you have a build process you +can use a build/source control revision number. + +If you serve files as a group, you can use the utility function Minify_groupUri() +to get a "versioned" Minify URI for use in your HTML. E.g.: + +"; + + +DEBUG MODE + +In debug mode, instead of compressing files, Minify sends combined files with +comments prepended to each line to show the line number in the original source +file. To enable this, set $min_allowDebugFlag to true in config.php and append +"&debug=1" to your URIs. E.g. /min/?f=script1.js,script2.js&debug=1 + +Known issue: files with comment-like strings/regexps can cause problems in this mode. + + +QUESTIONS? + +http://groups.google.com/group/minify \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/builder/_index.js b/plugins/Minify/extlib/minify/min/builder/_index.js new file mode 100644 index 0000000000..8e5313a3b1 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/builder/_index.js @@ -0,0 +1,242 @@ +var MUB = { + _uid : 0 + ,_minRoot : '/min/?' + ,checkRewrite : function () { + var testUri = location.pathname.replace(/\/[^\/]*$/, '/rewriteTest.js').substr(1); + function fail() { + $('#minRewriteFailed')[0].className = 'topNote'; + }; + $.ajax({ + url : '../f=' + testUri + '&' + (new Date()).getTime() + ,success : function (data) { + if (data === '1') { + MUB._minRoot = '/min/'; + $('span.minRoot').html('/min/'); + } else + fail(); + } + ,error : fail + }); + } + /** + * Get markup for new source LI element + */ + ,newLi : function () { + return '
  • http://' + location.host + '/' + + ' ' + + '
  • '; + } + /** + * Add new empty source LI and attach handlers to buttons + */ + ,addLi : function () { + $('#sources').append(MUB.newLi()); + var li = $('#li' + MUB._uid)[0]; + $('button[title=Remove]', li).click(function () { + $('#results').hide(); + var hadValue = !!$('input', li)[0].value; + $(li).remove(); + }); + $('button[title$=Earlier]', li).click(function () { + $(li).prev('li').find('input').each(function () { + $('#results').hide(); + // this = previous li input + var tmp = this.value; + this.value = $('input', li).val(); + $('input', li).val(tmp); + MUB.updateAllTestLinks(); + }); + }); + $('button[title$=Later]', li).click(function () { + $(li).next('li').find('input').each(function () { + $('#results').hide(); + // this = next li input + var tmp = this.value; + this.value = $('input', li).val(); + $('input', li).val(tmp); + MUB.updateAllTestLinks(); + }); + }); + ++MUB._uid; + } + /** + * In the context of a source LI element, this will analyze the URI in + * the INPUT and check the URL on the site. + */ + ,liUpdateTestLink : function () { // call in context of li element + if (! $('input', this)[0].value) + return; + var li = this; + $('span', this).html(''); + var url = 'http://' + location.host + '/' + + $('input', this)[0].value.replace(/^\//, ''); + $.ajax({ + url : url + ,complete : function (xhr, stat) { + if ('success' == stat) + $('span', li).html('✓'); + else { + $('span', li).html('') + .find('button').click(function () { + MUB.liUpdateTestLink.call(li); + }); + } + } + ,dataType : 'text' + }); + } + /** + * Check all source URLs + */ + ,updateAllTestLinks : function () { + $('#sources li').each(MUB.liUpdateTestLink); + } + /** + * In a given array of strings, find the character they all have at + * a particular index + * @param Array arr array of strings + * @param Number pos index to check + * @return mixed a common char or '' if any do not match + */ + ,getCommonCharAtPos : function (arr, pos) { + var i + ,l = arr.length + ,c = arr[0].charAt(pos); + if (c === '' || l === 1) + return c; + for (i = 1; i < l; ++i) + if (arr[i].charAt(pos) !== c) + return ''; + return c; + } + /** + * Get the shortest URI to minify the set of source files + * @param Array sources URIs + */ + ,getBestUri : function (sources) { + var pos = 0 + ,base = '' + ,c; + while (true) { + c = MUB.getCommonCharAtPos(sources, pos); + if (c === '') + break; + else + base += c; + ++pos; + } + base = base.replace(/[^\/]+$/, ''); + var uri = MUB._minRoot + 'f=' + sources.join(','); + if (base.charAt(base.length - 1) === '/') { + // we have a base dir! + var basedSources = sources + ,i + ,l = sources.length; + for (i = 0; i < l; ++i) { + basedSources[i] = sources[i].substr(base.length); + } + base = base.substr(0, base.length - 1); + var bUri = MUB._minRoot + 'b=' + base + '&f=' + basedSources.join(','); + //window.console && console.log([uri, bUri]); + uri = uri.length < bUri.length + ? uri + : bUri; + } + return uri; + } + /** + * Create the Minify URI for the sources + */ + ,update : function () { + MUB.updateAllTestLinks(); + var sources = [] + ,ext = false + ,fail = false; + $('#sources input').each(function () { + var m, val; + if (! fail && this.value && (m = this.value.match(/\.(css|js)$/))) { + var thisExt = m[1]; + if (ext === false) + ext = thisExt; + else if (thisExt !== ext) { + fail = true; + return alert('extensions must match!'); + } + this.value = this.value.replace(/^\//, ''); + if (-1 != $.inArray(this.value, sources)) { + fail = true; + return alert('duplicate file!'); + } + sources.push(this.value); + } + }); + if (fail || ! sources.length) + return; + $('#groupConfig').val(" 'keyName' => array('//" + sources.join("', '//") + "'),"); + var uri = MUB.getBestUri(sources) + ,uriH = uri.replace(//, '>').replace(/&/, '&'); + $('#uriA').html(uriH)[0].href = uri; + $('#uriHtml').val( + ext === 'js' + ? '' + : '' + ); + $('#results').show(); + } + /** + * Handler for the "Add file +" button + */ + ,addButtonClick : function () { + $('#results').hide(); + MUB.addLi(); + MUB.updateAllTestLinks(); + $('#update').show().click(MUB.update); + $('#sources li:last input')[0].focus(); + } + /** + * Runs on DOMready + */ + ,init : function () { + $('#app').show(); + $('#sources').html(''); + $('#add button').click(MUB.addButtonClick); + // make easier to copy text out of + $('#uriHtml, #groupConfig').click(function () { + this.select(); + }).focus(function () { + this.select(); + }); + $('a.ext').attr({target:'_blank'}); + if (location.hash) { + // make links out of URIs from bookmarklet + $('#getBm').hide(); + $('#bmUris').html('

    Found by bookmarklet: /' + + location.hash.substr(1).split(',').join(' | /') + + '

    ' + ); + $('#bmUris a').click(function () { + MUB.addButtonClick(); + $('#sources li:last input').val(this.innerHTML) + MUB.liUpdateTestLink.call($('#sources li:last')[0]); + $('#results').hide(); + return false; + }).attr({title:'Add file +'}); + } else { + // copy bookmarklet code into href + var bmUri = location.pathname.replace(/\/[^\/]*$/, '/bm.js').substr(1); + $.ajax({ + url : '../?f=' + bmUri + ,success : function (code) { + $('#bm')[0].href = code + .replace('%BUILDER_URL%', location.href) + .replace(/\n/g, ' '); + } + ,dataType : 'text' + }); + $.browser.msie && $('#getBm p:last').append(' Sorry, not supported in MSIE!'); + MUB.addButtonClick(); + } + MUB.checkRewrite(); + } +}; +window.onload = MUB.init; \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/builder/bm.js b/plugins/Minify/extlib/minify/min/builder/bm.js new file mode 100644 index 0000000000..10d1943814 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/builder/bm.js @@ -0,0 +1,36 @@ +javascript:(function() { + var d = document + ,uris = [] + ,i = 0 + ,o + ,home = (location + '').split('/').splice(0, 3).join('/') + '/'; + function add(uri) { + return (0 === uri.indexOf(home)) + && (!/[\?&]/.test(uri)) + && uris.push(escape(uri.substr(home.length))); + }; + function sheet(ss) { + // we must check the domain with add() before accessing ss.cssRules + // otherwise a security exception will be thrown + if (ss.href && add(ss.href) && ss.cssRules) { + var i = 0, r; + while (r = ss.cssRules[i++]) + r.styleSheet && sheet(r.styleSheet); + } + }; + while (o = d.getElementsByTagName('script')[i++]) + o.src && !(o.type && /vbs/i.test(o.type)) && add(o.src); + i = 0; + while (o = d.styleSheets[i++]) + /* http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-DocumentStyle-styleSheets + document.styleSheet is a list property where [0] accesses the 1st element and + [outOfRange] returns null. In IE, styleSheets is a function, and also throws an + exception when you check the out of bounds index. (sigh) */ + sheet(o); + if (uris.length) + window.open('%BUILDER_URL%#' + uris.join(',')); + else + alert('No js/css files found with URLs within "' + + home.split('/')[2] + + '".\n(This tool is limited to URLs with the same domain.)'); +})(); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/builder/index.php b/plugins/Minify/extlib/minify/min/builder/index.php new file mode 100644 index 0000000000..1b20982220 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/builder/index.php @@ -0,0 +1,182 @@ + + + + + Minify URI Builder + + + + +

    Note: Please set $min_cachePath +in /min/config.php to improve performance.

    + + +

    Note: Your webserver does not seem to + support mod_rewrite (used in /min/.htaccess). Your Minify URIs will contain "?", which +may reduce the benefit of proxy cache servers.

    + +

    Minify URI Builder

    + + + +
    + +

    Create a list of Javascript or CSS files (or 1 is fine) you'd like to combine +and click [Update].

    + +
    +
    + +
    + +

    + +
    + +

    Minify URI

    +

    Place this URI in your HTML to serve the files above combined, minified, compressed and +with cache headers.

    + + + +
    URI/min (opens in new window)
    HTML
    + +

    How to serve these files as a group

    +

    For the best performance you can serve these files as a pre-defined group with a URI +like: /min/?g=keyName

    +

    To do this, add a line like this to /min/groupsConfig.php:

    + +
    return array(
    +    ... your existing groups here ...
    +
    +);
    + +

    Make sure to replace keyName with a unique key for this group.

    +
    + +
    +

    Find URIs on a Page

    +

    You can use the bookmarklet below to fetch all CSS & Javascript URIs from a page +on your site. When you active it, this page will open in a new window with a list of +available URIs to add.

    + +

    Create Minify URIs (right-click, add to bookmarks)

    +
    + +

    Combining CSS files that contain @import

    +

    If your CSS files contain @import declarations, Minify will not +remove them. Therefore, you will want to remove those that point to files already +in your list, and move any others to the top of the first file in your list +(imports below any styles will be ignored by browsers as invalid).

    +

    If you desire, you can use Minify URIs in imports and they will not be touched +by Minify. E.g. @import "/min/?g=css2";

    + +
    + +
    +

    Need help? Search or post to the Minify discussion list.

    +

    This app is minified :) view +source

    + + + + + + + ob_get_contents() + ,'id' => __FILE__ + ,'lastModifiedTime' => max( + // regenerate cache if either of these change + filemtime(__FILE__) + ,filemtime(dirname(__FILE__) . '/../config.php') + ) + ,'minifyAll' => true + ,'encodeOutput' => $encodeOutput +); +ob_end_clean(); + +set_include_path(dirname(__FILE__) . '/../lib' . PATH_SEPARATOR . get_include_path()); + +require 'Minify.php'; + +if (0 === stripos(PHP_OS, 'win')) { + Minify::setDocRoot(); // we may be on IIS +} +Minify::setCache(isset($min_cachePath) ? $min_cachePath : null); +Minify::$uploaderHoursBehind = $min_uploaderHoursBehind; + +Minify::serve('Page', $serveOpts); diff --git a/plugins/Minify/extlib/minify/min/builder/ocCheck.php b/plugins/Minify/extlib/minify/min/builder/ocCheck.php new file mode 100644 index 0000000000..c47baa33db --- /dev/null +++ b/plugins/Minify/extlib/minify/min/builder/ocCheck.php @@ -0,0 +1,36 @@ + 'World!' + ,'method' => 'deflate' + )); + $he->encode(); + $he->sendAll(); + +} else { + // echo status "0" or "1" + header('Content-Type: text/plain'); + echo (int)$_oc; +} diff --git a/plugins/Minify/extlib/minify/min/builder/rewriteTest.js b/plugins/Minify/extlib/minify/min/builder/rewriteTest.js new file mode 100644 index 0000000000..56a6051ca2 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/builder/rewriteTest.js @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/groupsConfig.php b/plugins/Minify/extlib/minify/min/groupsConfig.php new file mode 100644 index 0000000000..9e2514d7ad --- /dev/null +++ b/plugins/Minify/extlib/minify/min/groupsConfig.php @@ -0,0 +1,34 @@ + array('//js/file1.js', '//js/file2.js'), + // 'css' => array('//css/file1.css', '//css/file2.css'), + + // custom source example + /*'js2' => array( + dirname(__FILE__) . '/../min_unit_tests/_test_files/js/before.js', + // do NOT process this file + new Minify_Source(array( + 'filepath' => dirname(__FILE__) . '/../min_unit_tests/_test_files/js/before.js', + 'minifier' => create_function('$a', 'return $a;') + )) + ),//*/ + + /*'js3' => array( + dirname(__FILE__) . '/../min_unit_tests/_test_files/js/before.js', + // do NOT process this file + new Minify_Source(array( + 'filepath' => dirname(__FILE__) . '/../min_unit_tests/_test_files/js/before.js', + 'minifier' => array('Minify_Packer', 'minify') + )) + ),//*/ +); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/index.php b/plugins/Minify/extlib/minify/min/index.php new file mode 100644 index 0000000000..51c352569a --- /dev/null +++ b/plugins/Minify/extlib/minify/min/index.php @@ -0,0 +1,66 @@ + + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ + + +/** + * Sends the given data to the FirePHP Firefox Extension. + * The data can be displayed in the Firebug Console or in the + * "Server" request tab. + * + * For more information see: http://www.firephp.org/ + * + * @copyright Copyright (C) 2007-2008 Christoph Dorn + * @author Christoph Dorn + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ +class FirePHP { + + /** + * FirePHP version + * + * @var string + */ + const VERSION = '0.2.0'; + + /** + * Firebug LOG level + * + * Logs a message to firebug console. + * + * @var string + */ + const LOG = 'LOG'; + + /** + * Firebug INFO level + * + * Logs a message to firebug console and displays an info icon before the message. + * + * @var string + */ + const INFO = 'INFO'; + + /** + * Firebug WARN level + * + * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise. + * + * @var string + */ + const WARN = 'WARN'; + + /** + * Firebug ERROR level + * + * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. + * + * @var string + */ + const ERROR = 'ERROR'; + + /** + * Dumps a variable to firebug's server panel + * + * @var string + */ + const DUMP = 'DUMP'; + + /** + * Displays a stack trace in firebug console + * + * @var string + */ + const TRACE = 'TRACE'; + + /** + * Displays an exception in firebug console + * + * Increments the firebug error count. + * + * @var string + */ + const EXCEPTION = 'EXCEPTION'; + + /** + * Displays an table in firebug console + * + * @var string + */ + const TABLE = 'TABLE'; + + /** + * Starts a group in firebug console + * + * @var string + */ + const GROUP_START = 'GROUP_START'; + + /** + * Ends a group in firebug console + * + * @var string + */ + const GROUP_END = 'GROUP_END'; + + /** + * Singleton instance of FirePHP + * + * @var FirePHP + */ + protected static $instance = null; + + /** + * Wildfire protocol message index + * + * @var int + */ + protected $messageIndex = 1; + + /** + * Options for the library + * + * @var array + */ + protected $options = array(); + + /** + * Filters used to exclude object members when encoding + * + * @var array + */ + protected $objectFilters = array(); + + /** + * A stack of objects used to detect recursion during object encoding + * + * @var object + */ + protected $objectStack = array(); + + /** + * Flag to enable/disable logging + * + * @var boolean + */ + protected $enabled = true; + + /** + * The object constructor + */ + function __construct() { + $this->options['maxObjectDepth'] = 10; + $this->options['maxArrayDepth'] = 20; + $this->options['useNativeJsonEncode'] = true; + $this->options['includeLineNumbers'] = true; + } + + /** + * When the object gets serialized only include specific object members. + * + * @return array + */ + public function __sleep() { + return array('options','objectFilters','enabled'); + } + + /** + * Gets singleton instance of FirePHP + * + * @param boolean $AutoCreate + * @return FirePHP + */ + public static function getInstance($AutoCreate=false) { + if($AutoCreate===true && !self::$instance) { + self::init(); + } + return self::$instance; + } + + /** + * Creates FirePHP object and stores it for singleton access + * + * @return FirePHP + */ + public static function init() { + return self::$instance = new self(); + } + + /** + * Enable and disable logging to Firebug + * + * @param boolean $Enabled TRUE to enable, FALSE to disable + * @return void + */ + public function setEnabled($Enabled) { + $this->enabled = $Enabled; + } + + /** + * Check if logging is enabled + * + * @return boolean TRUE if enabled + */ + public function getEnabled() { + return $this->enabled; + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @param string $Class The class name of the object + * @param array $Filter An array or members to exclude + * @return void + */ + public function setObjectFilter($Class, $Filter) { + $this->objectFilters[$Class] = $Filter; + } + + /** + * Set some options for the library + * + * Options: + * - maxObjectDepth: The maximum depth to traverse objects (default: 10) + * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) + * - useNativeJsonEncode: If true will use json_encode() (default: true) + * - includeLineNumbers: If true will include line numbers and filenames (default: true) + * + * @param array $Options The options to be set + * @return void + */ + public function setOptions($Options) { + $this->options = array_merge($this->options,$Options); + } + + /** + * Register FirePHP as your error handler + * + * Will throw exceptions for each php error. + */ + public function registerErrorHandler() + { + //NOTE: The following errors will not be caught by this error handler: + // E_ERROR, E_PARSE, E_CORE_ERROR, + // E_CORE_WARNING, E_COMPILE_ERROR, + // E_COMPILE_WARNING, E_STRICT + + set_error_handler(array($this,'errorHandler')); + } + + /** + * FirePHP's error handler + * + * Throws exception for each php error that will occur. + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + */ + public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) + { + // Don't throw exception if error reporting is switched off + if (error_reporting() == 0) { + return; + } + // Only throw exceptions for errors we are asking for + if (error_reporting() & $errno) { + throw new ErrorException($errstr, 0, $errno, $errfile, $errline); + } + } + + /** + * Register FirePHP as your exception handler + */ + public function registerExceptionHandler() + { + set_exception_handler(array($this,'exceptionHandler')); + } + + /** + * FirePHP's exception handler + * + * Logs all exceptions to your firebug console and then stops the script. + * + * @param Exception $Exception + * @throws Exception + */ + function exceptionHandler($Exception) { + $this->fb($Exception); + } + + /** + * Set custom processor url for FirePHP + * + * @param string $URL + */ + public function setProcessorUrl($URL) + { + $this->setHeader('X-FirePHP-ProcessorURL', $URL); + } + + /** + * Set custom renderer url for FirePHP + * + * @param string $URL + */ + public function setRendererUrl($URL) + { + $this->setHeader('X-FirePHP-RendererURL', $URL); + } + + /** + * Start a group for following messages + * + * @param string $Name + * @return true + * @throws Exception + */ + public function group($Name) { + return $this->fb(null, $Name, FirePHP::GROUP_START); + } + + /** + * Ends a group you have started before + * + * @return true + * @throws Exception + */ + public function groupEnd() { + return $this->fb(null, null, FirePHP::GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function log($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::LOG); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function info($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::INFO); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function warn($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::WARN); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function error($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::ERROR); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $Key + * @param mixed $Variable + * @return true + * @throws Exception + */ + public function dump($Key, $Variable) { + return $this->fb($Variable, $Key, FirePHP::DUMP); + } + + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $Label + * @return true + * @throws Exception + */ + public function trace($Label) { + return $this->fb($Label, FirePHP::TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $Label + * @param string $Table + * @return true + * @throws Exception + */ + public function table($Label, $Table) { + return $this->fb($Table, $Label, FirePHP::TABLE); + } + + /** + * Check if FirePHP is installed on client + * + * @return boolean + */ + public function detectClientExtension() { + /* Check if FirePHP is installed on client */ + if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || + !version_compare($m[1][0],'0.0.6','>=')) { + return false; + } + return true; + } + + /** + * Log varible to Firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object The variable to be logged + * @return true Return TRUE if message was added to headers, FALSE otherwise + * @throws Exception + */ + public function fb($Object) { + + if(!$this->enabled) { + return false; + } + + if (headers_sent($filename, $linenum)) { + throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); + } + + $Type = null; + $Label = null; + + if(func_num_args()==1) { + } else + if(func_num_args()==2) { + switch(func_get_arg(1)) { + case self::LOG: + case self::INFO: + case self::WARN: + case self::ERROR: + case self::DUMP: + case self::TRACE: + case self::EXCEPTION: + case self::TABLE: + case self::GROUP_START: + case self::GROUP_END: + $Type = func_get_arg(1); + break; + default: + $Label = func_get_arg(1); + break; + } + } else + if(func_num_args()==3) { + $Type = func_get_arg(2); + $Label = func_get_arg(1); + } else { + throw $this->newException('Wrong number of arguments to fb() function!'); + } + + + if(!$this->detectClientExtension()) { + return false; + } + + $meta = array(); + $skipFinalObjectEncode = false; + + if($Object instanceof Exception) { + + $meta['file'] = $this->_escapeTraceFile($Object->getFile()); + $meta['line'] = $Object->getLine(); + + $trace = $Object->getTrace(); + if($Object instanceof ErrorException + && isset($trace[0]['function']) + && $trace[0]['function']=='errorHandler' + && isset($trace[0]['class']) + && $trace[0]['class']=='FirePHP') { + + $severity = false; + switch($Object->getSeverity()) { + case E_WARNING: $severity = 'E_WARNING'; break; + case E_NOTICE: $severity = 'E_NOTICE'; break; + case E_USER_ERROR: $severity = 'E_USER_ERROR'; break; + case E_USER_WARNING: $severity = 'E_USER_WARNING'; break; + case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break; + case E_STRICT: $severity = 'E_STRICT'; break; + case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break; + case E_DEPRECATED: $severity = 'E_DEPRECATED'; break; + case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break; + } + + $Object = array('Class'=>get_class($Object), + 'Message'=>$severity.': '.$Object->getMessage(), + 'File'=>$this->_escapeTraceFile($Object->getFile()), + 'Line'=>$Object->getLine(), + 'Type'=>'trigger', + 'Trace'=>$this->_escapeTrace(array_splice($trace,2))); + $skipFinalObjectEncode = true; + } else { + $Object = array('Class'=>get_class($Object), + 'Message'=>$Object->getMessage(), + 'File'=>$this->_escapeTraceFile($Object->getFile()), + 'Line'=>$Object->getLine(), + 'Type'=>'throw', + 'Trace'=>$this->_escapeTrace($trace)); + $skipFinalObjectEncode = true; + } + $Type = self::EXCEPTION; + + } else + if($Type==self::TRACE) { + + $trace = debug_backtrace(); + if(!$trace) return false; + for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if($trace[$i]['function']=='fb' + || $trace[$i]['function']=='trace' + || $trace[$i]['function']=='send') { + $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', + 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', + 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', + 'Message'=>$trace[$i]['args'][0], + 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', + 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', + 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', + 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); + + $skipFinalObjectEncode = true; + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } else + if($Type==self::TABLE) { + + if(isset($Object[0]) && is_string($Object[0])) { + $Object[1] = $this->encodeTable($Object[1]); + } else { + $Object = $this->encodeTable($Object); + } + + $skipFinalObjectEncode = true; + + } else { + if($Type===null) { + $Type = self::LOG; + } + } + + if($this->options['includeLineNumbers']) { + if(!isset($meta['file']) || !isset($meta['line'])) { + + $trace = debug_backtrace(); + for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if(isset($trace[$i]['file']) + && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip FB::fb() */ + } else { + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } + } else { + unset($meta['file']); + unset($meta['line']); + } + + $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); + $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION); + + $structure_index = 1; + if($Type==self::DUMP) { + $structure_index = 2; + $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); + } else { + $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); + } + + if($Type==self::DUMP) { + $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; + } else { + $msg_meta = array('Type'=>$Type); + if($Label!==null) { + $msg_meta['Label'] = $Label; + } + if(isset($meta['file'])) { + $msg_meta['File'] = $meta['file']; + } + if(isset($meta['line'])) { + $msg_meta['Line'] = $meta['line']; + } + $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; + } + + $parts = explode("\n",chunk_split($msg, 5000, "\n")); + + for( $i=0 ; $i2) { + // Message needs to be split into multiple parts + $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + (($i==0)?strlen($msg):'') + . '|' . $part . '|' + . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + strlen($part) . '|' . $part . '|'); + } + + $this->messageIndex++; + + if ($this->messageIndex > 99999) { + throw new Exception('Maximum number (99,999) of messages reached!'); + } + } + } + + $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); + + return true; + } + + /** + * Standardizes path for windows systems. + * + * @param string $Path + * @return string + */ + protected function _standardizePath($Path) { + return preg_replace('/\\\\+/','/',$Path); + } + + /** + * Escape trace path for windows systems + * + * @param array $Trace + * @return array + */ + protected function _escapeTrace($Trace) { + if(!$Trace) return $Trace; + for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); + } + if(isset($Trace[$i]['args'])) { + $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); + } + } + return $Trace; + } + + /** + * Escape file information of trace for windows systems + * + * @param string $File + * @return string + */ + protected function _escapeTraceFile($File) { + /* Check if we have a windows filepath */ + if(strpos($File,'\\')) { + /* First strip down to single \ */ + + $file = preg_replace('/\\\\+/','\\',$File); + + return $file; + } + return $File; + } + + /** + * Send header + * + * @param string $Name + * @param string_type $Value + */ + protected function setHeader($Name, $Value) { + return header($Name.': '.$Value); + } + + /** + * Get user agent + * + * @return string|false + */ + protected function getUserAgent() { + if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; + return $_SERVER['HTTP_USER_AGENT']; + } + + /** + * Returns a new exception + * + * @param string $Message + * @return Exception + */ + protected function newException($Message) { + return new Exception($Message); + } + + /** + * Encode an object into a JSON string + * + * Uses PHP's jeson_encode() if available + * + * @param object $Object The object to be encoded + * @return string The JSON string + */ + protected function jsonEncode($Object, $skipObjectEncode=false) + { + if(!$skipObjectEncode) { + $Object = $this->encodeObject($Object); + } + + if(function_exists('json_encode') + && $this->options['useNativeJsonEncode']!=false) { + + return json_encode($Object); + } else { + return $this->json_encode($Object); + } + } + + /** + * Encodes a table by encoding each row and column with encodeObject() + * + * @param array $Table The table to be encoded + * @return array + */ + protected function encodeTable($Table) { + if(!$Table) return $Table; + for( $i=0 ; $iencodeObject($Table[$i][$j]); + } + } + } + return $Table; + } + + /** + * Encodes an object including members with + * protected and private visibility + * + * @param Object $Object The object to be encoded + * @param int $Depth The current traversal depth + * @return array All members of the object + */ + protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) + { + $return = array(); + + if (is_object($Object)) { + + if ($ObjectDepth > $this->options['maxObjectDepth']) { + return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; + } + + foreach ($this->objectStack as $refVal) { + if ($refVal === $Object) { + return '** Recursion ('.get_class($Object).') **'; + } + } + array_push($this->objectStack, $Object); + + $return['__className'] = $class = get_class($Object); + + $reflectionClass = new ReflectionClass($class); + $properties = array(); + foreach( $reflectionClass->getProperties() as $property) { + $properties[$property->getName()] = $property; + } + + $members = (array)$Object; + + foreach( $properties as $raw_name => $property ) { + + $name = $raw_name; + if($property->isStatic()) { + $name = 'static:'.$name; + } + if($property->isPublic()) { + $name = 'public:'.$name; + } else + if($property->isPrivate()) { + $name = 'private:'.$name; + $raw_name = "\0".$class."\0".$raw_name; + } else + if($property->isProtected()) { + $name = 'protected:'.$name; + $raw_name = "\0".'*'."\0".$raw_name; + } + + if(!(isset($this->objectFilters[$class]) + && is_array($this->objectFilters[$class]) + && in_array($raw_name,$this->objectFilters[$class]))) { + + if(array_key_exists($raw_name,$members) + && !$property->isStatic()) { + + $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1); + + } else { + if(method_exists($property,'setAccessible')) { + $property->setAccessible(true); + $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); + } else + if($property->isPublic()) { + $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); + } else { + $return[$name] = '** Need PHP 5.3 to get value **'; + } + } + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + + // Include all members that are not defined in the class + // but exist in the object + foreach( $members as $raw_name => $value ) { + + $name = $raw_name; + + if ($name{0} == "\0") { + $parts = explode("\0", $name); + $name = $parts[2]; + } + + if(!isset($properties[$name])) { + $name = 'undeclared:'.$name; + + if(!(isset($this->objectFilters[$class]) + && is_array($this->objectFilters[$class]) + && in_array($raw_name,$this->objectFilters[$class]))) { + + $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + } + + array_pop($this->objectStack); + + } elseif (is_array($Object)) { + + if ($ArrayDepth > $this->options['maxArrayDepth']) { + return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; + } + + foreach ($Object as $key => $val) { + + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($key=='GLOBALS' + && is_array($val) + && array_key_exists('GLOBALS',$val)) { + $val['GLOBALS'] = '** Recursion (GLOBALS) **'; + } + + $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); + } + } else { + if(self::is_utf8($Object)) { + return $Object; + } else { + return utf8_encode($Object); + } + } + return $return; + } + + /** + * Returns true if $string is valid UTF-8 and false otherwise. + * + * @param mixed $str String to be tested + * @return boolean + */ + protected static function is_utf8($str) { + $c=0; $b=0; + $bits=0; + $len=strlen($str); + for($i=0; $i<$len; $i++){ + $c=ord($str[$i]); + if($c > 128){ + if(($c >= 254)) return false; + elseif($c >= 252) $bits=6; + elseif($c >= 248) $bits=5; + elseif($c >= 240) $bits=4; + elseif($c >= 224) $bits=3; + elseif($c >= 192) $bits=2; + else return false; + if(($i+$bits) > $len) return false; + while($bits > 1){ + $i++; + $b=ord($str[$i]); + if($b < 128 || $b > 191) return false; + $bits--; + } + } + } + return true; + } + + /** + * Converts to and from JSON format. + * + * JSON (JavaScript Object Notation) is a lightweight data-interchange + * format. It is easy for humans to read and write. It is easy for machines + * to parse and generate. It is based on a subset of the JavaScript + * Programming Language, Standard ECMA-262 3rd Edition - December 1999. + * This feature can also be found in Python. JSON is a text format that is + * completely language independent but uses conventions that are familiar + * to programmers of the C-family of languages, including C, C++, C#, Java, + * JavaScript, Perl, TCL, and many others. These properties make JSON an + * ideal data-interchange language. + * + * This package provides a simple encoder and decoder for JSON notation. It + * is intended for use with client-side Javascript applications that make + * use of HTTPRequest to perform server communication functions - data can + * be encoded into JSON notation for use in a client-side javascript, or + * decoded from incoming Javascript requests. JSON format is native to + * Javascript, and can be directly eval()'ed with no further parsing + * overhead + * + * All strings should be in ASCII or UTF-8 format! + * + * LICENSE: 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. + * + * THIS SOFTWARE IS PROVIDED ``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 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 + * @package Services_JSON + * @author Michal Migurski + * @author Matt Knapp + * @author Brett Stimmerman + * @author Christoph Dorn + * @copyright 2005 Michal Migurski + * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + + + /** + * Keep a list of objects as we descend into the array so we can detect recursion. + */ + private $json_objectStack = array(); + + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + private function json_utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) { + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + } + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return mixed JSON string representation of input var or an error if a problem occurs + * @access public + */ + private function json_encode($var) + { + + if(is_object($var)) { + if(in_array($var,$this->json_objectStack)) { + return '"** Recursion **"'; + } + } + + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($var), + array_values($var)); + + array_pop($this->json_objectStack); + + foreach($properties as $property) { + if($property instanceof Exception) { + return $property; + } + } + + return '{' . join(',', $properties) . '}'; + } + + $this->json_objectStack[] = $var; + + // treat it like a regular array + $elements = array_map(array($this, 'json_encode'), $var); + + array_pop($this->json_objectStack); + + foreach($elements as $element) { + if($element instanceof Exception) { + return $element; + } + } + + return '[' . join(',', $elements) . ']'; + + case 'object': + $vars = self::encodeObject($var); + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($vars), + array_values($vars)); + + array_pop($this->json_objectStack); + + foreach($properties as $property) { + if($property instanceof Exception) { + return $property; + } + } + + return '{' . join(',', $properties) . '}'; + + default: + return null; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + private function json_name_value($name, $value) + { + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($name=='GLOBALS' + && is_array($value) + && array_key_exists('GLOBALS',$value)) { + $value['GLOBALS'] = '** Recursion **'; + } + + $encoded_value = $this->json_encode($value); + + if($encoded_value instanceof Exception) { + return $encoded_value; + } + + return $this->json_encode(strval($name)) . ':' . $encoded_value; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/HTTP/ConditionalGet.php b/plugins/Minify/extlib/minify/min/lib/HTTP/ConditionalGet.php new file mode 100644 index 0000000000..823db058fa --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/HTTP/ConditionalGet.php @@ -0,0 +1,348 @@ + + * list($updateTime, $content) = getDbUpdateAndContent(); + * $cg = new HTTP_ConditionalGet(array( + * 'lastModifiedTime' => $updateTime + * ,'isPublic' => true + * )); + * $cg->sendHeaders(); + * if ($cg->cacheIsValid) { + * exit(); + * } + * echo $content; + * + * + * E.g. Shortcut for the above + * + * HTTP_ConditionalGet::check($updateTime, true); // exits if client has cache + * echo $content; + * + * + * E.g. Content from DB with no update time: + * + * $content = getContentFromDB(); + * $cg = new HTTP_ConditionalGet(array( + * 'contentHash' => md5($content) + * )); + * $cg->sendHeaders(); + * if ($cg->cacheIsValid) { + * exit(); + * } + * echo $content; + * + * + * E.g. Static content with some static includes: + * + * // before content + * $cg = new HTTP_ConditionalGet(array( + * 'lastUpdateTime' => max( + * filemtime(__FILE__) + * ,filemtime('/path/to/header.inc') + * ,filemtime('/path/to/footer.inc') + * ) + * )); + * $cg->sendHeaders(); + * if ($cg->cacheIsValid) { + * exit(); + * } + * + * @package Minify + * @subpackage HTTP + * @author Stephen Clay + */ +class HTTP_ConditionalGet { + + /** + * Does the client have a valid copy of the requested resource? + * + * You'll want to check this after instantiating the object. If true, do + * not send content, just call sendHeaders() if you haven't already. + * + * @var bool + */ + public $cacheIsValid = null; + + /** + * @param array $spec options + * + * 'isPublic': (bool) if true, the Cache-Control header will contain + * "public", allowing proxies to cache the content. Otherwise "private" will + * be sent, allowing only browser caching. (default false) + * + * 'lastModifiedTime': (int) if given, both ETag AND Last-Modified headers + * will be sent with content. This is recommended. + * + * 'encoding': (string) if set, the header "Vary: Accept-Encoding" will + * always be sent and a truncated version of the encoding will be appended + * to the ETag. E.g. "pub123456;gz". This will also trigger a more lenient + * checking of the client's If-None-Match header, as the encoding portion of + * the ETag will be stripped before comparison. + * + * 'contentHash': (string) if given, only the ETag header can be sent with + * content (only HTTP1.1 clients can conditionally GET). The given string + * should be short with no quote characters and always change when the + * resource changes (recommend md5()). This is not needed/used if + * lastModifiedTime is given. + * + * 'eTag': (string) if given, this will be used as the ETag header rather + * than values based on lastModifiedTime or contentHash. Also the encoding + * string will not be appended to the given value as described above. + * + * 'invalidate': (bool) if true, the client cache will be considered invalid + * without testing. Effectively this disables conditional GET. + * (default false) + * + * 'maxAge': (int) if given, this will set the Cache-Control max-age in + * seconds, and also set the Expires header to the equivalent GMT date. + * After the max-age period has passed, the browser will again send a + * conditional GET to revalidate its cache. + * + * @return null + */ + public function __construct($spec) + { + $scope = (isset($spec['isPublic']) && $spec['isPublic']) + ? 'public' + : 'private'; + $maxAge = 0; + // backwards compatibility (can be removed later) + if (isset($spec['setExpires']) + && is_numeric($spec['setExpires']) + && ! isset($spec['maxAge'])) { + $spec['maxAge'] = $spec['setExpires'] - $_SERVER['REQUEST_TIME']; + } + if (isset($spec['maxAge'])) { + $maxAge = $spec['maxAge']; + $this->_headers['Expires'] = self::gmtDate( + $_SERVER['REQUEST_TIME'] + $spec['maxAge'] + ); + } + $etagAppend = ''; + if (isset($spec['encoding'])) { + $this->_stripEtag = true; + $this->_headers['Vary'] = 'Accept-Encoding'; + if ('' !== $spec['encoding']) { + if (0 === strpos($spec['encoding'], 'x-')) { + $spec['encoding'] = substr($spec['encoding'], 2); + } + $etagAppend = ';' . substr($spec['encoding'], 0, 2); + } + } + if (isset($spec['lastModifiedTime'])) { + $this->_setLastModified($spec['lastModifiedTime']); + if (isset($spec['eTag'])) { // Use it + $this->_setEtag($spec['eTag'], $scope); + } else { // base both headers on time + $this->_setEtag($spec['lastModifiedTime'] . $etagAppend, $scope); + } + } elseif (isset($spec['eTag'])) { // Use it + $this->_setEtag($spec['eTag'], $scope); + } elseif (isset($spec['contentHash'])) { // Use the hash as the ETag + $this->_setEtag($spec['contentHash'] . $etagAppend, $scope); + } + $this->_headers['Cache-Control'] = "max-age={$maxAge}, {$scope}"; + // invalidate cache if disabled, otherwise check + $this->cacheIsValid = (isset($spec['invalidate']) && $spec['invalidate']) + ? false + : $this->_isCacheValid(); + } + + /** + * Get array of output headers to be sent + * + * In the case of 304 responses, this array will only contain the response + * code header: array('_responseCode' => 'HTTP/1.0 304 Not Modified') + * + * Otherwise something like: + * + * array( + * 'Cache-Control' => 'max-age=0, public' + * ,'ETag' => '"foobar"' + * ) + * + * + * @return array + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Set the Content-Length header in bytes + * + * With most PHP configs, as long as you don't flush() output, this method + * is not needed and PHP will buffer all output and set Content-Length for + * you. Otherwise you'll want to call this to let the client know up front. + * + * @param int $bytes + * + * @return int copy of input $bytes + */ + public function setContentLength($bytes) + { + return $this->_headers['Content-Length'] = $bytes; + } + + /** + * Send headers + * + * @see getHeaders() + * + * Note this doesn't "clear" the headers. Calling sendHeaders() will + * call header() again (but probably have not effect) and getHeaders() will + * still return the headers. + * + * @return null + */ + public function sendHeaders() + { + $headers = $this->_headers; + if (array_key_exists('_responseCode', $headers)) { + header($headers['_responseCode']); + unset($headers['_responseCode']); + } + foreach ($headers as $name => $val) { + header($name . ': ' . $val); + } + } + + /** + * Exit if the client's cache is valid for this resource + * + * This is a convenience method for common use of the class + * + * @param int $lastModifiedTime if given, both ETag AND Last-Modified headers + * will be sent with content. This is recommended. + * + * @param bool $isPublic (default false) if true, the Cache-Control header + * will contain "public", allowing proxies to cache the content. Otherwise + * "private" will be sent, allowing only browser caching. + * + * @param array $options (default empty) additional options for constructor + * + * @return null + */ + public static function check($lastModifiedTime = null, $isPublic = false, $options = array()) + { + if (null !== $lastModifiedTime) { + $options['lastModifiedTime'] = (int)$lastModifiedTime; + } + $options['isPublic'] = (bool)$isPublic; + $cg = new HTTP_ConditionalGet($options); + $cg->sendHeaders(); + if ($cg->cacheIsValid) { + exit(); + } + } + + + /** + * Get a GMT formatted date for use in HTTP headers + * + * + * header('Expires: ' . HTTP_ConditionalGet::gmtdate($time)); + * + * + * @param int $time unix timestamp + * + * @return string + */ + public static function gmtDate($time) + { + return gmdate('D, d M Y H:i:s \G\M\T', $time); + } + + protected $_headers = array(); + protected $_lmTime = null; + protected $_etag = null; + protected $_stripEtag = false; + + protected function _setEtag($hash, $scope) + { + $this->_etag = '"' . substr($scope, 0, 3) . $hash . '"'; + $this->_headers['ETag'] = $this->_etag; + } + + protected function _setLastModified($time) + { + $this->_lmTime = (int)$time; + $this->_headers['Last-Modified'] = self::gmtDate($time); + } + + /** + * Determine validity of client cache and queue 304 header if valid + */ + protected function _isCacheValid() + { + if (null === $this->_etag) { + // lmTime is copied to ETag, so this condition implies that the + // server sent neither ETag nor Last-Modified, so the client can't + // possibly has a valid cache. + return false; + } + $isValid = ($this->resourceMatchedEtag() || $this->resourceNotModified()); + if ($isValid) { + $this->_headers['_responseCode'] = 'HTTP/1.0 304 Not Modified'; + } + return $isValid; + } + + protected function resourceMatchedEtag() + { + if (!isset($_SERVER['HTTP_IF_NONE_MATCH'])) { + return false; + } + $clientEtagList = get_magic_quotes_gpc() + ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) + : $_SERVER['HTTP_IF_NONE_MATCH']; + $clientEtags = explode(',', $clientEtagList); + + $compareTo = $this->normalizeEtag($this->_etag); + foreach ($clientEtags as $clientEtag) { + if ($this->normalizeEtag($clientEtag) === $compareTo) { + // respond with the client's matched ETag, even if it's not what + // we would've sent by default + $this->_headers['ETag'] = trim($clientEtag); + return true; + } + } + return false; + } + + protected function normalizeEtag($etag) { + $etag = trim($etag); + return $this->_stripEtag + ? preg_replace('/;\\w\\w"$/', '"', $etag) + : $etag; + } + + protected function resourceNotModified() + { + if (!isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { + return false; + } + $ifModifiedSince = $_SERVER['HTTP_IF_MODIFIED_SINCE']; + if (false !== ($semicolon = strrpos($ifModifiedSince, ';'))) { + // IE has tacked on extra data to this header, strip it + $ifModifiedSince = substr($ifModifiedSince, 0, $semicolon); + } + if ($ifModifiedSince == self::gmtDate($this->_lmTime)) { + // Apache 2.2's behavior. If there was no ETag match, send the + // non-encoded version of the ETag value. + $this->_headers['ETag'] = $this->normalizeEtag($this->_etag); + return true; + } + return false; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/HTTP/Encoder.php b/plugins/Minify/extlib/minify/min/lib/HTTP/Encoder.php new file mode 100644 index 0000000000..66c26789c3 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/HTTP/Encoder.php @@ -0,0 +1,326 @@ + + * // Send a CSS file, compressed if possible + * $he = new HTTP_Encoder(array( + * 'content' => file_get_contents($cssFile) + * ,'type' => 'text/css' + * )); + * $he->encode(); + * $he->sendAll(); + * + * + * + * // Shortcut to encoding output + * header('Content-Type: text/css'); // needed if not HTML + * HTTP_Encoder::output($css); + * + * + * + * // Just sniff for the accepted encoding + * $encoding = HTTP_Encoder::getAcceptedEncoding(); + * + * + * For more control over headers, use getHeaders() and getData() and send your + * own output. + * + * Note: If you don't need header mgmt, use PHP's native gzencode, gzdeflate, + * and gzcompress functions for gzip, deflate, and compress-encoding + * respectively. + * + * @package Minify + * @subpackage HTTP + * @author Stephen Clay + */ +class HTTP_Encoder { + + /** + * Should the encoder allow HTTP encoding to IE6? + * + * If you have many IE6 users and the bandwidth savings is worth troubling + * some of them, set this to true. + * + * By default, encoding is only offered to IE7+. When this is true, + * getAcceptedEncoding() will return an encoding for IE6 if its user agent + * string contains "SV1". This has been documented in many places as "safe", + * but there seem to be remaining, intermittent encoding bugs in patched + * IE6 on the wild web. + * + * @var bool + */ + public static $encodeToIe6 = false; + + + /** + * Default compression level for zlib operations + * + * This level is used if encode() is not given a $compressionLevel + * + * @var int + */ + public static $compressionLevel = 6; + + + /** + * Get an HTTP Encoder object + * + * @param array $spec options + * + * 'content': (string required) content to be encoded + * + * 'type': (string) if set, the Content-Type header will have this value. + * + * 'method: (string) only set this if you are forcing a particular encoding + * method. If not set, the best method will be chosen by getAcceptedEncoding() + * The available methods are 'gzip', 'deflate', 'compress', and '' (no + * encoding) + * + * @return null + */ + public function __construct($spec) + { + $this->_content = $spec['content']; + $this->_headers['Content-Length'] = (string)strlen($this->_content); + if (isset($spec['type'])) { + $this->_headers['Content-Type'] = $spec['type']; + } + if (isset($spec['method']) + && in_array($spec['method'], array('gzip', 'deflate', 'compress', ''))) + { + $this->_encodeMethod = array($spec['method'], $spec['method']); + } else { + $this->_encodeMethod = self::getAcceptedEncoding(); + } + } + + /** + * Get content in current form + * + * Call after encode() for encoded content. + * + * return string + */ + public function getContent() + { + return $this->_content; + } + + /** + * Get array of output headers to be sent + * + * E.g. + * + * array( + * 'Content-Length' => '615' + * ,'Content-Encoding' => 'x-gzip' + * ,'Vary' => 'Accept-Encoding' + * ) + * + * + * @return array + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Send output headers + * + * You must call this before headers are sent and it probably cannot be + * used in conjunction with zlib output buffering / mod_gzip. Errors are + * not handled purposefully. + * + * @see getHeaders() + * + * @return null + */ + public function sendHeaders() + { + foreach ($this->_headers as $name => $val) { + header($name . ': ' . $val); + } + } + + /** + * Send output headers and content + * + * A shortcut for sendHeaders() and echo getContent() + * + * You must call this before headers are sent and it probably cannot be + * used in conjunction with zlib output buffering / mod_gzip. Errors are + * not handled purposefully. + * + * @return null + */ + public function sendAll() + { + $this->sendHeaders(); + echo $this->_content; + } + + /** + * Determine the client's best encoding method from the HTTP Accept-Encoding + * header. + * + * If no Accept-Encoding header is set, or the browser is IE before v6 SP2, + * this will return ('', ''), the "identity" encoding. + * + * A syntax-aware scan is done of the Accept-Encoding, so the method must + * be non 0. The methods are favored in order of gzip, deflate, then + * compress. Deflate is always smallest and generally faster, but is + * rarely sent by servers, so client support could be buggier. + * + * @param bool $allowCompress allow the older compress encoding + * + * @param bool $allowDeflate allow the more recent deflate encoding + * + * @return array two values, 1st is the actual encoding method, 2nd is the + * alias of that method to use in the Content-Encoding header (some browsers + * call gzip "x-gzip" etc.) + */ + public static function getAcceptedEncoding($allowCompress = true, $allowDeflate = true) + { + // @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + + if (! isset($_SERVER['HTTP_ACCEPT_ENCODING']) + || self::_isBuggyIe()) + { + return array('', ''); + } + $ae = $_SERVER['HTTP_ACCEPT_ENCODING']; + // gzip checks (quick) + if (0 === strpos($ae, 'gzip,') // most browsers + || 0 === strpos($ae, 'deflate, gzip,') // opera + ) { + return array('gzip', 'gzip'); + } + // gzip checks (slow) + if (preg_match( + '@(?:^|,)\\s*((?:x-)?gzip)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@' + ,$ae + ,$m)) { + return array('gzip', $m[1]); + } + if ($allowDeflate) { + // deflate checks + $aeRev = strrev($ae); + if (0 === strpos($aeRev, 'etalfed ,') // ie, webkit + || 0 === strpos($aeRev, 'etalfed,') // gecko + || 0 === strpos($ae, 'deflate,') // opera + // slow parsing + || preg_match( + '@(?:^|,)\\s*deflate\\s*(?:$|,|;\\s*q=(?:0\\.|1))@', $ae)) { + return array('deflate', 'deflate'); + } + } + if ($allowCompress && preg_match( + '@(?:^|,)\\s*((?:x-)?compress)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@' + ,$ae + ,$m)) { + return array('compress', $m[1]); + } + return array('', ''); + } + + /** + * Encode (compress) the content + * + * If the encode method is '' (none) or compression level is 0, or the 'zlib' + * extension isn't loaded, we return false. + * + * Then the appropriate gz_* function is called to compress the content. If + * this fails, false is returned. + * + * The header "Vary: Accept-Encoding" is added. If encoding is successful, + * the Content-Length header is updated, and Content-Encoding is also added. + * + * @param int $compressionLevel given to zlib functions. If not given, the + * class default will be used. + * + * @return bool success true if the content was actually compressed + */ + public function encode($compressionLevel = null) + { + $this->_headers['Vary'] = 'Accept-Encoding'; + if (null === $compressionLevel) { + $compressionLevel = self::$compressionLevel; + } + if ('' === $this->_encodeMethod[0] + || ($compressionLevel == 0) + || !extension_loaded('zlib')) + { + return false; + } + if ($this->_encodeMethod[0] === 'deflate') { + $encoded = gzdeflate($this->_content, $compressionLevel); + } elseif ($this->_encodeMethod[0] === 'gzip') { + $encoded = gzencode($this->_content, $compressionLevel); + } else { + $encoded = gzcompress($this->_content, $compressionLevel); + } + if (false === $encoded) { + return false; + } + $this->_headers['Content-Length'] = strlen($encoded); + $this->_headers['Content-Encoding'] = $this->_encodeMethod[1]; + $this->_content = $encoded; + return true; + } + + /** + * Encode and send appropriate headers and content + * + * This is a convenience method for common use of the class + * + * @param string $content + * + * @param int $compressionLevel given to zlib functions. If not given, the + * class default will be used. + * + * @return bool success true if the content was actually compressed + */ + public static function output($content, $compressionLevel = null) + { + if (null === $compressionLevel) { + $compressionLevel = self::$compressionLevel; + } + $he = new HTTP_Encoder(array('content' => $content)); + $ret = $he->encode($compressionLevel); + $he->sendAll(); + return $ret; + } + + protected $_content = ''; + protected $_headers = array(); + protected $_encodeMethod = array('', ''); + + /** + * Is the browser an IE version earlier than 6 SP2? + */ + protected static function _isBuggyIe() + { + $ua = $_SERVER['HTTP_USER_AGENT']; + // quick escape for non-IEs + if (0 !== strpos($ua, 'Mozilla/4.0 (compatible; MSIE ') + || false !== strpos($ua, 'Opera')) { + return false; + } + // no regex = faaast + $version = (float)substr($ua, 30); + return self::$encodeToIe6 + ? ($version < 6 || ($version == 6 && false === strpos($ua, 'SV1'))) + : ($version < 7); + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/JSMin.php b/plugins/Minify/extlib/minify/min/lib/JSMin.php new file mode 100644 index 0000000000..770e1c6104 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/JSMin.php @@ -0,0 +1,314 @@ + (PHP port) + * @author Steve Clay (modifications + cleanup) + * @author Andrea Giammarchi (spaceBeforeRegExp) + * @copyright 2002 Douglas Crockford (jsmin.c) + * @copyright 2008 Ryan Grove (PHP port) + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://code.google.com/p/jsmin-php/ + */ + +class JSMin { + const ORD_LF = 10; + const ORD_SPACE = 32; + const ACTION_KEEP_A = 1; + const ACTION_DELETE_A = 2; + const ACTION_DELETE_A_B = 3; + + protected $a = "\n"; + protected $b = ''; + protected $input = ''; + protected $inputIndex = 0; + protected $inputLength = 0; + protected $lookAhead = null; + protected $output = ''; + + /** + * Minify Javascript + * + * @param string $js Javascript to be minified + * @return string + */ + public static function minify($js) + { + $jsmin = new JSMin($js); + return $jsmin->min(); + } + + /** + * Setup process + */ + public function __construct($input) + { + $this->input = str_replace("\r\n", "\n", $input); + $this->inputLength = strlen($this->input); + } + + /** + * Perform minification, return result + */ + public function min() + { + if ($this->output !== '') { // min already run + return $this->output; + } + $this->action(self::ACTION_DELETE_A_B); + + while ($this->a !== null) { + // determine next command + $command = self::ACTION_KEEP_A; // default + if ($this->a === ' ') { + if (! $this->isAlphaNum($this->b)) { + $command = self::ACTION_DELETE_A; + } + } elseif ($this->a === "\n") { + if ($this->b === ' ') { + $command = self::ACTION_DELETE_A_B; + } elseif (false === strpos('{[(+-', $this->b) + && ! $this->isAlphaNum($this->b)) { + $command = self::ACTION_DELETE_A; + } + } elseif (! $this->isAlphaNum($this->a)) { + if ($this->b === ' ' + || ($this->b === "\n" + && (false === strpos('}])+-"\'', $this->a)))) { + $command = self::ACTION_DELETE_A_B; + } + } + $this->action($command); + } + $this->output = trim($this->output); + return $this->output; + } + + /** + * ACTION_KEEP_A = Output A. Copy B to A. Get the next B. + * ACTION_DELETE_A = Copy B to A. Get the next B. + * ACTION_DELETE_A_B = Get the next B. + */ + protected function action($command) + { + switch ($command) { + case self::ACTION_KEEP_A: + $this->output .= $this->a; + // fallthrough + case self::ACTION_DELETE_A: + $this->a = $this->b; + if ($this->a === "'" || $this->a === '"') { // string literal + $str = $this->a; // in case needed for exception + while (true) { + $this->output .= $this->a; + $this->a = $this->get(); + if ($this->a === $this->b) { // end quote + break; + } + if (ord($this->a) <= self::ORD_LF) { + throw new JSMin_UnterminatedStringException( + 'Unterminated String: ' . var_export($str, true)); + } + $str .= $this->a; + if ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $str .= $this->a; + } + } + } + // fallthrough + case self::ACTION_DELETE_A_B: + $this->b = $this->next(); + if ($this->b === '/' && $this->isRegexpLiteral()) { // RegExp literal + $this->output .= $this->a . $this->b; + $pattern = '/'; // in case needed for exception + while (true) { + $this->a = $this->get(); + $pattern .= $this->a; + if ($this->a === '/') { // end pattern + break; // while (true) + } elseif ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + } elseif (ord($this->a) <= self::ORD_LF) { + throw new JSMin_UnterminatedRegExpException( + 'Unterminated RegExp: '. var_export($pattern, true)); + } + $this->output .= $this->a; + } + $this->b = $this->next(); + } + // end case ACTION_DELETE_A_B + } + } + + protected function isRegexpLiteral() + { + if (false !== strpos("\n{;(,=:[!&|?", $this->a)) { // we aren't dividing + return true; + } + if (' ' === $this->a) { + $length = strlen($this->output); + if ($length < 2) { // weird edge case + return true; + } + // you can't divide a keyword + if (preg_match('/(?:case|else|in|return|typeof)$/', $this->output, $m)) { + if ($this->output === $m[0]) { // odd but could happen + return true; + } + // make sure it's a keyword, not end of an identifier + $charBeforeKeyword = substr($this->output, $length - strlen($m[0]) - 1, 1); + if (! $this->isAlphaNum($charBeforeKeyword)) { + return true; + } + } + } + return false; + } + + /** + * Get next char. Convert ctrl char to space. + */ + protected function get() + { + $c = $this->lookAhead; + $this->lookAhead = null; + if ($c === null) { + if ($this->inputIndex < $this->inputLength) { + $c = $this->input[$this->inputIndex]; + $this->inputIndex += 1; + } else { + return null; + } + } + if ($c === "\r" || $c === "\n") { + return "\n"; + } + if (ord($c) < self::ORD_SPACE) { // control char + return ' '; + } + return $c; + } + + /** + * Get next char. If is ctrl character, translate to a space or newline. + */ + protected function peek() + { + $this->lookAhead = $this->get(); + return $this->lookAhead; + } + + /** + * Is $c a letter, digit, underscore, dollar sign, escape, or non-ASCII? + */ + protected function isAlphaNum($c) + { + return (preg_match('/^[0-9a-zA-Z_\\$\\\\]$/', $c) || ord($c) > 126); + } + + protected function singleLineComment() + { + $comment = ''; + while (true) { + $get = $this->get(); + $comment .= $get; + if (ord($get) <= self::ORD_LF) { // EOL reached + // if IE conditional comment + if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + return "/{$comment}"; + } + return $get; + } + } + } + + protected function multipleLineComment() + { + $this->get(); + $comment = ''; + while (true) { + $get = $this->get(); + if ($get === '*') { + if ($this->peek() === '/') { // end of comment reached + $this->get(); + // if comment preserved by YUI Compressor + if (0 === strpos($comment, '!')) { + return "\n/*" . substr($comment, 1) . "*/\n"; + } + // if IE conditional comment + if (preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + return "/*{$comment}*/"; + } + return ' '; + } + } elseif ($get === null) { + throw new JSMin_UnterminatedCommentException('Unterminated Comment: ' . var_export('/*' . $comment, true)); + } + $comment .= $get; + } + } + + /** + * Get the next character, skipping over comments. + * Some comments may be preserved. + */ + protected function next() + { + $get = $this->get(); + if ($get !== '/') { + return $get; + } + switch ($this->peek()) { + case '/': return $this->singleLineComment(); + case '*': return $this->multipleLineComment(); + default: return $get; + } + } +} + +class JSMin_UnterminatedStringException extends Exception {} +class JSMin_UnterminatedCommentException extends Exception {} +class JSMin_UnterminatedRegExpException extends Exception {} diff --git a/plugins/Minify/extlib/minify/min/lib/JSMinPlus.php b/plugins/Minify/extlib/minify/min/lib/JSMinPlus.php new file mode 100644 index 0000000000..31a1a5cb48 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/JSMinPlus.php @@ -0,0 +1,1872 @@ + + * + * Usage: $minified = JSMinPlus::minify($script [, $filename]) + * + * Versionlog (see also changelog.txt): + * 12-04-2009 - some small bugfixes and performance improvements + * 09-04-2009 - initial open sourced version 1.0 + * + * Latest version of this script: http://files.tweakers.net/jsminplus/jsminplus.zip + * + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Narcissus JavaScript engine. + * + * The Initial Developer of the Original Code is + * Brendan Eich . + * Portions created by the Initial Developer are Copyright (C) 2004 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Tino Zijdel + * PHP port, modifications and minifier routine are (C) 2009 + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +define('TOKEN_END', 1); +define('TOKEN_NUMBER', 2); +define('TOKEN_IDENTIFIER', 3); +define('TOKEN_STRING', 4); +define('TOKEN_REGEXP', 5); +define('TOKEN_NEWLINE', 6); +define('TOKEN_CONDCOMMENT_MULTILINE', 7); + +define('JS_SCRIPT', 100); +define('JS_BLOCK', 101); +define('JS_LABEL', 102); +define('JS_FOR_IN', 103); +define('JS_CALL', 104); +define('JS_NEW_WITH_ARGS', 105); +define('JS_INDEX', 106); +define('JS_ARRAY_INIT', 107); +define('JS_OBJECT_INIT', 108); +define('JS_PROPERTY_INIT', 109); +define('JS_GETTER', 110); +define('JS_SETTER', 111); +define('JS_GROUP', 112); +define('JS_LIST', 113); + +define('DECLARED_FORM', 0); +define('EXPRESSED_FORM', 1); +define('STATEMENT_FORM', 2); + +class JSMinPlus +{ + private $parser; + private $reserved = array( + 'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', + 'else', 'finally', 'for', 'function', 'if', 'in', 'instanceof', + 'new', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'var', + 'void', 'while', 'with', + // Words reserved for future use + 'abstract', 'boolean', 'byte', 'char', 'class', 'const', 'debugger', + 'double', 'enum', 'export', 'extends', 'final', 'float', 'goto', + 'implements', 'import', 'int', 'interface', 'long', 'native', + 'package', 'private', 'protected', 'public', 'short', 'static', + 'super', 'synchronized', 'throws', 'transient', 'volatile', + // These are not reserved, but should be taken into account + // in isValidIdentifier (See jslint source code) + 'arguments', 'eval', 'true', 'false', 'Infinity', 'NaN', 'null', 'undefined' + ); + + private function __construct() + { + $this->parser = new JSParser(); + } + + public static function minify($js, $filename='') + { + static $instance; + + // this is a singleton + if(!$instance) + $instance = new JSMinPlus(); + + return $instance->min($js, $filename); + } + + private function min($js, $filename) + { + try + { + $n = $this->parser->parse($js, $filename, 1); + return $this->parseTree($n); + } + catch(Exception $e) + { + echo $e->getMessage() . "\n"; + } + + return false; + } + + private function parseTree($n, $noBlockGrouping = false) + { + $s = ''; + + switch ($n->type) + { + case KEYWORD_FUNCTION: + $s .= 'function' . ($n->name ? ' ' . $n->name : '') . '('; + $params = $n->params; + for ($i = 0, $j = count($params); $i < $j; $i++) + $s .= ($i ? ',' : '') . $params[$i]; + $s .= '){' . $this->parseTree($n->body, true) . '}'; + break; + + case JS_SCRIPT: + // we do nothing with funDecls or varDecls + $noBlockGrouping = true; + // fall through + case JS_BLOCK: + $childs = $n->treeNodes; + for ($c = 0, $i = 0, $j = count($childs); $i < $j; $i++) + { + $t = $this->parseTree($childs[$i]); + if (strlen($t)) + { + if ($c) + { + if ($childs[$i]->type == KEYWORD_FUNCTION && $childs[$i]->functionForm == DECLARED_FORM) + $s .= "\n"; // put declared functions on a new line + else + $s .= ';'; + } + + $s .= $t; + + $c++; + } + } + + if ($c > 1 && !$noBlockGrouping) + { + $s = '{' . $s . '}'; + } + break; + + case KEYWORD_IF: + $s = 'if(' . $this->parseTree($n->condition) . ')'; + $thenPart = $this->parseTree($n->thenPart); + $elsePart = $n->elsePart ? $this->parseTree($n->elsePart) : null; + + // quite a rancid hack to see if we should enclose the thenpart in brackets + if ($thenPart[0] != '{') + { + if (strpos($thenPart, 'if(') !== false) + $thenPart = '{' . $thenPart . '}'; + elseif ($elsePart) + $thenPart .= ';'; + } + + $s .= $thenPart; + + if ($elsePart) + { + $s .= 'else'; + + if ($elsePart[0] != '{') + $s .= ' '; + + $s .= $elsePart; + } + break; + + case KEYWORD_SWITCH: + $s = 'switch(' . $this->parseTree($n->discriminant) . '){'; + $cases = $n->cases; + for ($i = 0, $j = count($cases); $i < $j; $i++) + { + $case = $cases[$i]; + if ($case->type == KEYWORD_CASE) + $s .= 'case' . ($case->caseLabel->type != TOKEN_STRING ? ' ' : '') . $this->parseTree($case->caseLabel) . ':'; + else + $s .= 'default:'; + + $statement = $this->parseTree($case->statements); + if ($statement) + $s .= $statement . ';'; + } + $s = rtrim($s, ';') . '}'; + break; + + case KEYWORD_FOR: + $s = 'for(' . ($n->setup ? $this->parseTree($n->setup) : '') + . ';' . ($n->condition ? $this->parseTree($n->condition) : '') + . ';' . ($n->update ? $this->parseTree($n->update) : '') . ')' + . $this->parseTree($n->body); + break; + + case KEYWORD_WHILE: + $s = 'while(' . $this->parseTree($n->condition) . ')' . $this->parseTree($n->body); + break; + + case JS_FOR_IN: + $s = 'for(' . ($n->varDecl ? $this->parseTree($n->varDecl) : $this->parseTree($n->iterator)) . ' in ' . $this->parseTree($n->object) . ')' . $this->parseTree($n->body); + break; + + case KEYWORD_DO: + $s = 'do{' . $this->parseTree($n->body, true) . '}while(' . $this->parseTree($n->condition) . ')'; + break; + + case KEYWORD_BREAK: + case KEYWORD_CONTINUE: + $s = $n->value . ($n->label ? ' ' . $n->label : ''); + break; + + case KEYWORD_TRY: + $s = 'try{' . $this->parseTree($n->tryBlock, true) . '}'; + $catchClauses = $n->catchClauses; + for ($i = 0, $j = count($catchClauses); $i < $j; $i++) + { + $t = $catchClauses[$i]; + $s .= 'catch(' . $t->varName . ($t->guard ? ' if ' . $this->parseTree($t->guard) : '') . '){' . $this->parseTree($t->block, true) . '}'; + } + if ($n->finallyBlock) + $s .= 'finally{' . $this->parseTree($n->finallyBlock, true) . '}'; + break; + + case KEYWORD_THROW: + $s = 'throw ' . $this->parseTree($n->exception); + break; + + case KEYWORD_RETURN: + $s = 'return' . ($n->value ? ' ' . $this->parseTree($n->value) : ''); + break; + + case KEYWORD_WITH: + $s = 'with(' . $this->parseTree($n->object) . ')' . $this->parseTree($n->body); + break; + + case KEYWORD_VAR: + case KEYWORD_CONST: + $s = $n->value . ' '; + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + { + $t = $childs[$i]; + $s .= ($i ? ',' : '') . $t->name; + $u = $t->initializer; + if ($u) + $s .= '=' . $this->parseTree($u); + } + break; + + case KEYWORD_DEBUGGER: + throw new Exception('NOT IMPLEMENTED: DEBUGGER'); + break; + + case TOKEN_CONDCOMMENT_MULTILINE: + $s = $n->value . ' '; + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + $s .= $this->parseTree($childs[$i]); + break; + + case OP_SEMICOLON: + if ($expression = $n->expression) + $s = $this->parseTree($expression); + break; + + case JS_LABEL: + $s = $n->label . ':' . $this->parseTree($n->statement); + break; + + case OP_COMMA: + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]); + break; + + case OP_ASSIGN: + $s = $this->parseTree($n->treeNodes[0]) . $n->value . $this->parseTree($n->treeNodes[1]); + break; + + case OP_HOOK: + $s = $this->parseTree($n->treeNodes[0]) . '?' . $this->parseTree($n->treeNodes[1]) . ':' . $this->parseTree($n->treeNodes[2]); + break; + + case OP_OR: case OP_AND: + case OP_BITWISE_OR: case OP_BITWISE_XOR: case OP_BITWISE_AND: + case OP_EQ: case OP_NE: case OP_STRICT_EQ: case OP_STRICT_NE: + case OP_LT: case OP_LE: case OP_GE: case OP_GT: + case OP_LSH: case OP_RSH: case OP_URSH: + case OP_MUL: case OP_DIV: case OP_MOD: + $s = $this->parseTree($n->treeNodes[0]) . $n->type . $this->parseTree($n->treeNodes[1]); + break; + + case OP_PLUS: + case OP_MINUS: + $s = $this->parseTree($n->treeNodes[0]) . $n->type; + $nextTokenType = $n->treeNodes[1]->type; + if ( $nextTokenType == OP_PLUS || $nextTokenType == OP_MINUS || + $nextTokenType == OP_INCREMENT || $nextTokenType == OP_DECREMENT || + $nextTokenType == OP_UNARY_PLUS || $nextTokenType == OP_UNARY_MINUS + ) + $s .= ' '; + $s .= $this->parseTree($n->treeNodes[1]); + break; + + case KEYWORD_IN: + $s = $this->parseTree($n->treeNodes[0]) . ' in ' . $this->parseTree($n->treeNodes[1]); + break; + + case KEYWORD_INSTANCEOF: + $s = $this->parseTree($n->treeNodes[0]) . ' instanceof ' . $this->parseTree($n->treeNodes[1]); + break; + + case KEYWORD_DELETE: + $s = 'delete ' . $this->parseTree($n->treeNodes[0]); + break; + + case KEYWORD_VOID: + $s = 'void(' . $this->parseTree($n->treeNodes[0]) . ')'; + break; + + case KEYWORD_TYPEOF: + $s = 'typeof ' . $this->parseTree($n->treeNodes[0]); + break; + + case OP_NOT: + case OP_BITWISE_NOT: + case OP_UNARY_PLUS: + case OP_UNARY_MINUS: + $s = $n->value . $this->parseTree($n->treeNodes[0]); + break; + + case OP_INCREMENT: + case OP_DECREMENT: + if ($n->postfix) + $s = $this->parseTree($n->treeNodes[0]) . $n->value; + else + $s = $n->value . $this->parseTree($n->treeNodes[0]); + break; + + case OP_DOT: + $s = $this->parseTree($n->treeNodes[0]) . '.' . $this->parseTree($n->treeNodes[1]); + break; + + case JS_INDEX: + $s = $this->parseTree($n->treeNodes[0]); + // See if we can replace named index with a dot saving 3 bytes + if ( $n->treeNodes[0]->type == TOKEN_IDENTIFIER && + $n->treeNodes[1]->type == TOKEN_STRING && + $this->isValidIdentifier(substr($n->treeNodes[1]->value, 1, -1)) + ) + $s .= '.' . substr($n->treeNodes[1]->value, 1, -1); + else + $s .= '[' . $this->parseTree($n->treeNodes[1]) . ']'; + break; + + case JS_LIST: + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]); + break; + + case JS_CALL: + $s = $this->parseTree($n->treeNodes[0]) . '(' . $this->parseTree($n->treeNodes[1]) . ')'; + break; + + case KEYWORD_NEW: + case JS_NEW_WITH_ARGS: + $s = 'new ' . $this->parseTree($n->treeNodes[0]) . '(' . ($n->type == JS_NEW_WITH_ARGS ? $this->parseTree($n->treeNodes[1]) : '') . ')'; + break; + + case JS_ARRAY_INIT: + $s = '['; + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + { + $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]); + } + $s .= ']'; + break; + + case JS_OBJECT_INIT: + $s = '{'; + $childs = $n->treeNodes; + for ($i = 0, $j = count($childs); $i < $j; $i++) + { + $t = $childs[$i]; + if ($i) + $s .= ','; + if ($t->type == JS_PROPERTY_INIT) + { + // Ditch the quotes when the index is a valid identifier + if ( $t->treeNodes[0]->type == TOKEN_STRING && + $this->isValidIdentifier(substr($t->treeNodes[0]->value, 1, -1)) + ) + $s .= substr($t->treeNodes[0]->value, 1, -1); + else + $s .= $t->treeNodes[0]->value; + + $s .= ':' . $this->parseTree($t->treeNodes[1]); + } + else + { + $s .= $t->type == JS_GETTER ? 'get' : 'set'; + $s .= ' ' . $t->name . '('; + $params = $t->params; + for ($i = 0, $j = count($params); $i < $j; $i++) + $s .= ($i ? ',' : '') . $params[$i]; + $s .= '){' . $this->parseTree($t->body, true) . '}'; + } + } + $s .= '}'; + break; + + case KEYWORD_NULL: case KEYWORD_THIS: case KEYWORD_TRUE: case KEYWORD_FALSE: + case TOKEN_IDENTIFIER: case TOKEN_NUMBER: case TOKEN_STRING: case TOKEN_REGEXP: + $s = $n->value; + break; + + case JS_GROUP: + $s = '(' . $this->parseTree($n->treeNodes[0]) . ')'; + break; + + default: + throw new Exception('UNKNOWN TOKEN TYPE: ' . $n->type); + } + + return $s; + } + + private function isValidIdentifier($string) + { + return preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*$/', $string) && !in_array($string, $this->reserved); + } +} + +class JSParser +{ + private $t; + + private $opPrecedence = array( + ';' => 0, + ',' => 1, + '=' => 2, '?' => 2, ':' => 2, + // The above all have to have the same precedence, see bug 330975. + '||' => 4, + '&&' => 5, + '|' => 6, + '^' => 7, + '&' => 8, + '==' => 9, '!=' => 9, '===' => 9, '!==' => 9, + '<' => 10, '<=' => 10, '>=' => 10, '>' => 10, 'in' => 10, 'instanceof' => 10, + '<<' => 11, '>>' => 11, '>>>' => 11, + '+' => 12, '-' => 12, + '*' => 13, '/' => 13, '%' => 13, + 'delete' => 14, 'void' => 14, 'typeof' => 14, + '!' => 14, '~' => 14, 'U+' => 14, 'U-' => 14, + '++' => 15, '--' => 15, + 'new' => 16, + '.' => 17, + JS_NEW_WITH_ARGS => 0, JS_INDEX => 0, JS_CALL => 0, + JS_ARRAY_INIT => 0, JS_OBJECT_INIT => 0, JS_GROUP => 0 + ); + + private $opArity = array( + ',' => -2, + '=' => 2, + '?' => 3, + '||' => 2, + '&&' => 2, + '|' => 2, + '^' => 2, + '&' => 2, + '==' => 2, '!=' => 2, '===' => 2, '!==' => 2, + '<' => 2, '<=' => 2, '>=' => 2, '>' => 2, 'in' => 2, 'instanceof' => 2, + '<<' => 2, '>>' => 2, '>>>' => 2, + '+' => 2, '-' => 2, + '*' => 2, '/' => 2, '%' => 2, + 'delete' => 1, 'void' => 1, 'typeof' => 1, + '!' => 1, '~' => 1, 'U+' => 1, 'U-' => 1, + '++' => 1, '--' => 1, + 'new' => 1, + '.' => 2, + JS_NEW_WITH_ARGS => 2, JS_INDEX => 2, JS_CALL => 2, + JS_ARRAY_INIT => 1, JS_OBJECT_INIT => 1, JS_GROUP => 1, + TOKEN_CONDCOMMENT_MULTILINE => 1 + ); + + public function __construct() + { + $this->t = new JSTokenizer(); + } + + public function parse($s, $f, $l) + { + // initialize tokenizer + $this->t->init($s, $f, $l); + + $x = new JSCompilerContext(false); + $n = $this->Script($x); + if (!$this->t->isDone()) + throw $this->t->newSyntaxError('Syntax error'); + + return $n; + } + + private function Script($x) + { + $n = $this->Statements($x); + $n->type = JS_SCRIPT; + $n->funDecls = $x->funDecls; + $n->varDecls = $x->varDecls; + + return $n; + } + + private function Statements($x) + { + $n = new JSNode($this->t, JS_BLOCK); + array_push($x->stmtStack, $n); + + while (!$this->t->isDone() && $this->t->peek() != OP_RIGHT_CURLY) + $n->addNode($this->Statement($x)); + + array_pop($x->stmtStack); + + return $n; + } + + private function Block($x) + { + $this->t->mustMatch(OP_LEFT_CURLY); + $n = $this->Statements($x); + $this->t->mustMatch(OP_RIGHT_CURLY); + + return $n; + } + + private function Statement($x) + { + $tt = $this->t->get(); + $n2 = null; + + // Cases for statements ending in a right curly return early, avoiding the + // common semicolon insertion magic after this switch. + switch ($tt) + { + case KEYWORD_FUNCTION: + return $this->FunctionDefinition( + $x, + true, + count($x->stmtStack) > 1 ? STATEMENT_FORM : DECLARED_FORM + ); + break; + + case OP_LEFT_CURLY: + $n = $this->Statements($x); + $this->t->mustMatch(OP_RIGHT_CURLY); + return $n; + + case KEYWORD_IF: + $n = new JSNode($this->t); + $n->condition = $this->ParenExpression($x); + array_push($x->stmtStack, $n); + $n->thenPart = $this->Statement($x); + $n->elsePart = $this->t->match(KEYWORD_ELSE) ? $this->Statement($x) : null; + array_pop($x->stmtStack); + return $n; + + case KEYWORD_SWITCH: + $n = new JSNode($this->t); + $this->t->mustMatch(OP_LEFT_PAREN); + $n->discriminant = $this->Expression($x); + $this->t->mustMatch(OP_RIGHT_PAREN); + $n->cases = array(); + $n->defaultIndex = -1; + + array_push($x->stmtStack, $n); + + $this->t->mustMatch(OP_LEFT_CURLY); + + while (($tt = $this->t->get()) != OP_RIGHT_CURLY) + { + switch ($tt) + { + case KEYWORD_DEFAULT: + if ($n->defaultIndex >= 0) + throw $this->t->newSyntaxError('More than one switch default'); + // FALL THROUGH + case KEYWORD_CASE: + $n2 = new JSNode($this->t); + if ($tt == KEYWORD_DEFAULT) + $n->defaultIndex = count($n->cases); + else + $n2->caseLabel = $this->Expression($x, OP_COLON); + break; + default: + throw $this->t->newSyntaxError('Invalid switch case'); + } + + $this->t->mustMatch(OP_COLON); + $n2->statements = new JSNode($this->t, JS_BLOCK); + while (($tt = $this->t->peek()) != KEYWORD_CASE && $tt != KEYWORD_DEFAULT && $tt != OP_RIGHT_CURLY) + $n2->statements->addNode($this->Statement($x)); + + array_push($n->cases, $n2); + } + + array_pop($x->stmtStack); + return $n; + + case KEYWORD_FOR: + $n = new JSNode($this->t); + $n->isLoop = true; + $this->t->mustMatch(OP_LEFT_PAREN); + + if (($tt = $this->t->peek()) != OP_SEMICOLON) + { + $x->inForLoopInit = true; + if ($tt == KEYWORD_VAR || $tt == KEYWORD_CONST) + { + $this->t->get(); + $n2 = $this->Variables($x); + } + else + { + $n2 = $this->Expression($x); + } + $x->inForLoopInit = false; + } + + if ($n2 && $this->t->match(KEYWORD_IN)) + { + $n->type = JS_FOR_IN; + if ($n2->type == KEYWORD_VAR) + { + if (count($n2->treeNodes) != 1) + { + throw $this->t->SyntaxError( + 'Invalid for..in left-hand side', + $this->t->filename, + $n2->lineno + ); + } + + // NB: n2[0].type == IDENTIFIER and n2[0].value == n2[0].name. + $n->iterator = $n2->treeNodes[0]; + $n->varDecl = $n2; + } + else + { + $n->iterator = $n2; + $n->varDecl = null; + } + + $n->object = $this->Expression($x); + } + else + { + $n->setup = $n2 ? $n2 : null; + $this->t->mustMatch(OP_SEMICOLON); + $n->condition = $this->t->peek() == OP_SEMICOLON ? null : $this->Expression($x); + $this->t->mustMatch(OP_SEMICOLON); + $n->update = $this->t->peek() == OP_RIGHT_PAREN ? null : $this->Expression($x); + } + + $this->t->mustMatch(OP_RIGHT_PAREN); + $n->body = $this->nest($x, $n); + return $n; + + case KEYWORD_WHILE: + $n = new JSNode($this->t); + $n->isLoop = true; + $n->condition = $this->ParenExpression($x); + $n->body = $this->nest($x, $n); + return $n; + + case KEYWORD_DO: + $n = new JSNode($this->t); + $n->isLoop = true; + $n->body = $this->nest($x, $n, KEYWORD_WHILE); + $n->condition = $this->ParenExpression($x); + if (!$x->ecmaStrictMode) + { + // "; + * $link = ""; + * + * // in min.php + * Minify::serve('Groups', array( + * 'groups' => $groupSources + * ,'setExpires' => (time() + 86400 * 365) + * )); + * + * + * @package Minify + * @author Stephen Clay + */ +class Minify_Build { + + /** + * Last modification time of all files in the build + * + * @var int + */ + public $lastModified = 0; + + /** + * String to use as ampersand in uri(). Set this to '&' if + * you are not HTML-escaping URIs. + * + * @var string + */ + public static $ampersand = '&'; + + /** + * Get a time-stamped URI + * + * + * echo $b->uri('/site.js'); + * // outputs "/site.js?1678242" + * + * echo $b->uri('/scriptaculous.js?load=effects'); + * // outputs "/scriptaculous.js?load=effects&1678242" + * + * + * @param string $uri + * @param boolean $forceAmpersand (default = false) Force the use of ampersand to + * append the timestamp to the URI. + * @return string + */ + public function uri($uri, $forceAmpersand = false) { + $sep = ($forceAmpersand || strpos($uri, '?') !== false) + ? self::$ampersand + : '?'; + return "{$uri}{$sep}{$this->lastModified}"; + } + + /** + * Create a build object + * + * @param array $sources array of Minify_Source objects and/or file paths + * + * @return null + */ + public function __construct($sources) + { + $max = 0; + foreach ((array)$sources as $source) { + if ($source instanceof Minify_Source) { + $max = max($max, $source->lastModified); + } elseif (is_string($source)) { + if (0 === strpos($source, '//')) { + $source = $_SERVER['DOCUMENT_ROOT'] . substr($source, 1); + } + if (is_file($source)) { + $max = max($max, filemtime($source)); + } + } + } + $this->lastModified = $max; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/CSS.php b/plugins/Minify/extlib/minify/min/lib/Minify/CSS.php new file mode 100644 index 0000000000..2220cf2211 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/CSS.php @@ -0,0 +1,83 @@ + + * @author http://code.google.com/u/1stvamp/ (Issue 64 patch) + */ +class Minify_CSS { + + /** + * Minify a CSS string + * + * @param string $css + * + * @param array $options available options: + * + * 'preserveComments': (default true) multi-line comments that begin + * with "/*!" will be preserved with newlines before and after to + * enhance readability. + * + * 'prependRelativePath': (default null) if given, this string will be + * prepended to all relative URIs in import/url declarations + * + * 'currentDir': (default null) if given, this is assumed to be the + * directory of the current CSS file. Using this, minify will rewrite + * all relative URIs in import/url declarations to correctly point to + * the desired files. For this to work, the files *must* exist and be + * visible by the PHP process. + * + * 'symlinks': (default = array()) If the CSS file is stored in + * a symlink-ed directory, provide an array of link paths to + * target paths, where the link paths are within the document root. Because + * paths need to be normalized for this to work, use "//" to substitute + * the doc root in the link paths (the array keys). E.g.: + * + * array('//symlink' => '/real/target/path') // unix + * array('//static' => 'D:\\staticStorage') // Windows + * + * + * @return string + */ + public static function minify($css, $options = array()) + { + require_once 'Minify/CSS/Compressor.php'; + if (isset($options['preserveComments']) + && !$options['preserveComments']) { + $css = Minify_CSS_Compressor::process($css, $options); + } else { + require_once 'Minify/CommentPreserver.php'; + $css = Minify_CommentPreserver::process( + $css + ,array('Minify_CSS_Compressor', 'process') + ,array($options) + ); + } + if (! isset($options['currentDir']) && ! isset($options['prependRelativePath'])) { + return $css; + } + require_once 'Minify/CSS/UriRewriter.php'; + if (isset($options['currentDir'])) { + return Minify_CSS_UriRewriter::rewrite( + $css + ,$options['currentDir'] + ,isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT'] + ,isset($options['symlinks']) ? $options['symlinks'] : array() + ); + } else { + return Minify_CSS_UriRewriter::prepend( + $css + ,$options['prependRelativePath'] + ); + } + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/CSS/Compressor.php b/plugins/Minify/extlib/minify/min/lib/Minify/CSS/Compressor.php new file mode 100644 index 0000000000..a34828681d --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/CSS/Compressor.php @@ -0,0 +1,250 @@ + + * @author http://code.google.com/u/1stvamp/ (Issue 64 patch) + */ +class Minify_CSS_Compressor { + + /** + * Minify a CSS string + * + * @param string $css + * + * @param array $options (currently ignored) + * + * @return string + */ + public static function process($css, $options = array()) + { + $obj = new Minify_CSS_Compressor($options); + return $obj->_process($css); + } + + /** + * @var array options + */ + protected $_options = null; + + /** + * @var bool Are we "in" a hack? + * + * I.e. are some browsers targetted until the next comment? + */ + protected $_inHack = false; + + + /** + * Constructor + * + * @param array $options (currently ignored) + * + * @return null + */ + private function __construct($options) { + $this->_options = $options; + } + + /** + * Minify a CSS string + * + * @param string $css + * + * @return string + */ + protected function _process($css) + { + $css = str_replace("\r\n", "\n", $css); + + // preserve empty comment after '>' + // http://www.webdevout.net/css-hacks#in_css-selectors + $css = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $css); + + // preserve empty comment between property and value + // http://css-discuss.incutio.com/?page=BoxModelHack + $css = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $css); + $css = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $css); + + // apply callback to all valid comments (and strip out surrounding ws + $css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@' + ,array($this, '_commentCB'), $css); + + // remove ws around { } and last semicolon in declaration block + $css = preg_replace('/\\s*{\\s*/', '{', $css); + $css = preg_replace('/;?\\s*}\\s*/', '}', $css); + + // remove ws surrounding semicolons + $css = preg_replace('/\\s*;\\s*/', ';', $css); + + // remove ws around urls + $css = preg_replace('/ + url\\( # url( + \\s* + ([^\\)]+?) # 1 = the URL (really just a bunch of non right parenthesis) + \\s* + \\) # ) + /x', 'url($1)', $css); + + // remove ws between rules and colons + $css = preg_replace('/ + \\s* + ([{;]) # 1 = beginning of block or rule separator + \\s* + ([\\*_]?[\\w\\-]+) # 2 = property (and maybe IE filter) + \\s* + : + \\s* + (\\b|[#\'"]) # 3 = first character of a value + /x', '$1$2:$3', $css); + + // remove ws in selectors + $css = preg_replace_callback('/ + (?: # non-capture + \\s* + [^~>+,\\s]+ # selector part + \\s* + [,>+~] # combinators + )+ + \\s* + [^~>+,\\s]+ # selector part + { # open declaration block + /x' + ,array($this, '_selectorsCB'), $css); + + // minimize hex colors + $css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i' + , '$1#$2$3$4$5', $css); + + // remove spaces between font families + $css = preg_replace_callback('/font-family:([^;}]+)([;}])/' + ,array($this, '_fontFamilyCB'), $css); + + $css = preg_replace('/@import\\s+url/', '@import url', $css); + + // replace any ws involving newlines with a single newline + $css = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $css); + + // separate common descendent selectors w/ newlines (to limit line lengths) + $css = preg_replace('/([\\w#\\.\\*]+)\\s+([\\w#\\.\\*]+){/', "$1\n$2{", $css); + + // Use newline after 1st numeric value (to limit line lengths). + $css = preg_replace('/ + ((?:padding|margin|border|outline):\\d+(?:px|em)?) # 1 = prop : 1st numeric value + \\s+ + /x' + ,"$1\n", $css); + + // prevent triggering IE6 bug: http://www.crankygeek.com/ie6pebug/ + $css = preg_replace('/:first-l(etter|ine)\\{/', ':first-l$1 {', $css); + + return trim($css); + } + + /** + * Replace what looks like a set of selectors + * + * @param array $m regex matches + * + * @return string + */ + protected function _selectorsCB($m) + { + // remove ws around the combinators + return preg_replace('/\\s*([,>+~])\\s*/', '$1', $m[0]); + } + + /** + * Process a comment and return a replacement + * + * @param array $m regex matches + * + * @return string + */ + protected function _commentCB($m) + { + $hasSurroundingWs = (trim($m[0]) !== $m[1]); + $m = $m[1]; + // $m is the comment content w/o the surrounding tokens, + // but the return value will replace the entire comment. + if ($m === 'keep') { + return '/**/'; + } + if ($m === '" "') { + // component of http://tantek.com/CSS/Examples/midpass.html + return '/*" "*/'; + } + if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) { + // component of http://tantek.com/CSS/Examples/midpass.html + return '/*";}}/* */'; + } + if ($this->_inHack) { + // inversion: feeding only to one browser + if (preg_match('@ + ^/ # comment started like /*/ + \\s* + (\\S[\\s\\S]+?) # has at least some non-ws content + \\s* + /\\* # ends like /*/ or /**/ + @x', $m, $n)) { + // end hack mode after this comment, but preserve the hack and comment content + $this->_inHack = false; + return "/*/{$n[1]}/**/"; + } + } + if (substr($m, -1) === '\\') { // comment ends like \*/ + // begin hack mode and preserve hack + $this->_inHack = true; + return '/*\\*/'; + } + if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */ + // begin hack mode and preserve hack + $this->_inHack = true; + return '/*/*/'; + } + if ($this->_inHack) { + // a regular comment ends hack mode but should be preserved + $this->_inHack = false; + return '/**/'; + } + // Issue 107: if there's any surrounding whitespace, it may be important, so + // replace the comment with a single space + return $hasSurroundingWs // remove all other comments + ? ' ' + : ''; + } + + /** + * Process a font-family listing and return a replacement + * + * @param array $m regex matches + * + * @return string + */ + protected function _fontFamilyCB($m) + { + $m[1] = preg_replace('/ + \\s* + ( + "[^"]+" # 1 = family in double qutoes + |\'[^\']+\' # or 1 = family in single quotes + |[\\w\\-]+ # or 1 = unquoted family + ) + \\s* + /x', '$1', $m[1]); + return 'font-family:' . $m[1] . $m[2]; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/CSS/UriRewriter.php b/plugins/Minify/extlib/minify/min/lib/Minify/CSS/UriRewriter.php new file mode 100644 index 0000000000..824c6bb2a1 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/CSS/UriRewriter.php @@ -0,0 +1,270 @@ + + */ +class Minify_CSS_UriRewriter { + + /** + * Defines which class to call as part of callbacks, change this + * if you extend Minify_CSS_UriRewriter + * @var string + */ + protected static $className = 'Minify_CSS_UriRewriter'; + + /** + * rewrite() and rewriteRelative() append debugging information here + * @var string + */ + public static $debugText = ''; + + /** + * Rewrite file relative URIs as root relative in CSS files + * + * @param string $css + * + * @param string $currentDir The directory of the current CSS file. + * + * @param string $docRoot The document root of the web site in which + * the CSS file resides (default = $_SERVER['DOCUMENT_ROOT']). + * + * @param array $symlinks (default = array()) If the CSS file is stored in + * a symlink-ed directory, provide an array of link paths to + * target paths, where the link paths are within the document root. Because + * paths need to be normalized for this to work, use "//" to substitute + * the doc root in the link paths (the array keys). E.g.: + * + * array('//symlink' => '/real/target/path') // unix + * array('//static' => 'D:\\staticStorage') // Windows + * + * + * @return string + */ + public static function rewrite($css, $currentDir, $docRoot = null, $symlinks = array()) + { + self::$_docRoot = self::_realpath( + $docRoot ? $docRoot : $_SERVER['DOCUMENT_ROOT'] + ); + self::$_currentDir = self::_realpath($currentDir); + self::$_symlinks = array(); + + // normalize symlinks + foreach ($symlinks as $link => $target) { + $link = ($link === '//') + ? self::$_docRoot + : str_replace('//', self::$_docRoot . '/', $link); + $link = strtr($link, '/', DIRECTORY_SEPARATOR); + self::$_symlinks[$link] = self::_realpath($target); + } + + self::$debugText .= "docRoot : " . self::$_docRoot . "\n" + . "currentDir : " . self::$_currentDir . "\n"; + if (self::$_symlinks) { + self::$debugText .= "symlinks : " . var_export(self::$_symlinks, 1) . "\n"; + } + self::$debugText .= "\n"; + + $css = self::_trimUrls($css); + + // rewrite + $css = preg_replace_callback('/@import\\s+([\'"])(.*?)[\'"]/' + ,array(self::$className, '_processUriCB'), $css); + $css = preg_replace_callback('/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + ,array(self::$className, '_processUriCB'), $css); + + return $css; + } + + /** + * Prepend a path to relative URIs in CSS files + * + * @param string $css + * + * @param string $path The path to prepend. + * + * @return string + */ + public static function prepend($css, $path) + { + self::$_prependPath = $path; + + $css = self::_trimUrls($css); + + // append + $css = preg_replace_callback('/@import\\s+([\'"])(.*?)[\'"]/' + ,array(self::$className, '_processUriCB'), $css); + $css = preg_replace_callback('/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + ,array(self::$className, '_processUriCB'), $css); + + self::$_prependPath = null; + return $css; + } + + + /** + * @var string directory of this stylesheet + */ + private static $_currentDir = ''; + + /** + * @var string DOC_ROOT + */ + private static $_docRoot = ''; + + /** + * @var array directory replacements to map symlink targets back to their + * source (within the document root) E.g. '/var/www/symlink' => '/var/realpath' + */ + private static $_symlinks = array(); + + /** + * @var string path to prepend + */ + private static $_prependPath = null; + + private static function _trimUrls($css) + { + return preg_replace('/ + url\\( # url( + \\s* + ([^\\)]+?) # 1 = URI (assuming does not contain ")") + \\s* + \\) # ) + /x', 'url($1)', $css); + } + + private static function _processUriCB($m) + { + // $m matched either '/@import\\s+([\'"])(.*?)[\'"]/' or '/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + $isImport = ($m[0][0] === '@'); + // determine URI and the quote character (if any) + if ($isImport) { + $quoteChar = $m[1]; + $uri = $m[2]; + } else { + // $m[1] is either quoted or not + $quoteChar = ($m[1][0] === "'" || $m[1][0] === '"') + ? $m[1][0] + : ''; + $uri = ($quoteChar === '') + ? $m[1] + : substr($m[1], 1, strlen($m[1]) - 2); + } + // analyze URI + if ('/' !== $uri[0] // root-relative + && false === strpos($uri, '//') // protocol (non-data) + && 0 !== strpos($uri, 'data:') // data protocol + ) { + // URI is file-relative: rewrite depending on options + $uri = (self::$_prependPath !== null) + ? (self::$_prependPath . $uri) + : self::rewriteRelative($uri, self::$_currentDir, self::$_docRoot, self::$_symlinks); + } + return $isImport + ? "@import {$quoteChar}{$uri}{$quoteChar}" + : "url({$quoteChar}{$uri}{$quoteChar})"; + } + + /** + * Rewrite a file relative URI as root relative + * + * + * Minify_CSS_UriRewriter::rewriteRelative( + * '../img/hello.gif' + * , '/home/user/www/css' // path of CSS file + * , '/home/user/www' // doc root + * ); + * // returns '/img/hello.gif' + * + * // example where static files are stored in a symlinked directory + * Minify_CSS_UriRewriter::rewriteRelative( + * 'hello.gif' + * , '/var/staticFiles/theme' + * , '/home/user/www' + * , array('/home/user/www/static' => '/var/staticFiles') + * ); + * // returns '/static/theme/hello.gif' + * + * + * @param string $uri file relative URI + * + * @param string $realCurrentDir realpath of the current file's directory. + * + * @param string $realDocRoot realpath of the site document root. + * + * @param array $symlinks (default = array()) If the file is stored in + * a symlink-ed directory, provide an array of link paths to + * real target paths, where the link paths "appear" to be within the document + * root. E.g.: + * + * array('/home/foo/www/not/real/path' => '/real/target/path') // unix + * array('C:\\htdocs\\not\\real' => 'D:\\real\\target\\path') // Windows + * + * + * @return string + */ + public static function rewriteRelative($uri, $realCurrentDir, $realDocRoot, $symlinks = array()) + { + // prepend path with current dir separator (OS-independent) + $path = strtr($realCurrentDir, '/', DIRECTORY_SEPARATOR) + . DIRECTORY_SEPARATOR . strtr($uri, '/', DIRECTORY_SEPARATOR); + + self::$debugText .= "file-relative URI : {$uri}\n" + . "path prepended : {$path}\n"; + + // "unresolve" a symlink back to doc root + foreach ($symlinks as $link => $target) { + if (0 === strpos($path, $target)) { + // replace $target with $link + $path = $link . substr($path, strlen($target)); + + self::$debugText .= "symlink unresolved : {$path}\n"; + + break; + } + } + // strip doc root + $path = substr($path, strlen($realDocRoot)); + + self::$debugText .= "docroot stripped : {$path}\n"; + + // fix to root-relative URI + + $uri = strtr($path, '/\\', '//'); + + // remove /./ and /../ where possible + $uri = str_replace('/./', '/', $uri); + // inspired by patch from Oleg Cherniy + do { + $uri = preg_replace('@/[^/]+/\\.\\./@', '/', $uri, 1, $changed); + } while ($changed); + + self::$debugText .= "traversals removed : {$uri}\n\n"; + + return $uri; + } + + /** + * Get realpath with any trailing slash removed. If realpath() fails, + * just remove the trailing slash. + * + * @param string $path + * + * @return mixed path with no trailing slash + */ + protected static function _realpath($path) + { + $realPath = realpath($path); + if ($realPath !== false) { + $path = $realPath; + } + return rtrim($path, '/\\'); + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Cache/APC.php b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/APC.php new file mode 100644 index 0000000000..ca84d29987 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/APC.php @@ -0,0 +1,130 @@ + + * Minify::setCache(new Minify_Cache_APC()); + * + * + * @package Minify + * @author Chris Edwards + **/ +class Minify_Cache_APC { + + /** + * Create a Minify_Cache_APC object, to be passed to + * Minify::setCache(). + * + * + * @param int $expire seconds until expiration (default = 0 + * meaning the item will not get an expiration date) + * + * @return null + */ + public function __construct($expire = 0) + { + $this->_exp = $expire; + } + + /** + * Write data to cache. + * + * @param string $id cache id + * + * @param string $data + * + * @return bool success + */ + public function store($id, $data) + { + return apc_store($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp); + } + + /** + * Get the size of a cache entry + * + * @param string $id cache id + * + * @return int size in bytes + */ + public function getSize($id) + { + return $this->_fetch($id) + ? strlen($this->_data) + : false; + } + + /** + * Does a valid cache entry exist? + * + * @param string $id cache id + * + * @param int $srcMtime mtime of the original source file(s) + * + * @return bool exists + */ + public function isValid($id, $srcMtime) + { + return ($this->_fetch($id) && ($this->_lm >= $srcMtime)); + } + + /** + * Send the cached content to output + * + * @param string $id cache id + */ + public function display($id) + { + echo $this->_fetch($id) + ? $this->_data + : ''; + } + + /** + * Fetch the cached content + * + * @param string $id cache id + * + * @return string + */ + public function fetch($id) + { + return $this->_fetch($id) + ? $this->_data + : ''; + } + + private $_exp = null; + + // cache of most recently fetched id + private $_lm = null; + private $_data = null; + private $_id = null; + + /** + * Fetch data and timestamp from apc, store in instance + * + * @param string $id + * + * @return bool success + */ + private function _fetch($id) + { + if ($this->_id === $id) { + return true; + } + $ret = apc_fetch($id); + if (false === $ret) { + $this->_id = null; + return false; + } + list($this->_lm, $this->_data) = explode('|', $ret, 2); + $this->_id = $id; + return true; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Cache/File.php b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/File.php new file mode 100644 index 0000000000..8744a7e04f --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/File.php @@ -0,0 +1,125 @@ +_locking = $fileLocking; + $this->_path = $path; + } + + /** + * Write data to cache. + * + * @param string $id cache id (e.g. a filename) + * + * @param string $data + * + * @return bool success + */ + public function store($id, $data) + { + $flag = $this->_locking + ? LOCK_EX + : null; + if (is_file($this->_path . '/' . $id)) { + @unlink($this->_path . '/' . $id); + } + if (! @file_put_contents($this->_path . '/' . $id, $data, $flag)) { + return false; + } + // write control + if ($data !== $this->fetch($id)) { + @unlink($file); + return false; + } + return true; + } + + /** + * Get the size of a cache entry + * + * @param string $id cache id (e.g. a filename) + * + * @return int size in bytes + */ + public function getSize($id) + { + return filesize($this->_path . '/' . $id); + } + + /** + * Does a valid cache entry exist? + * + * @param string $id cache id (e.g. a filename) + * + * @param int $srcMtime mtime of the original source file(s) + * + * @return bool exists + */ + public function isValid($id, $srcMtime) + { + $file = $this->_path . '/' . $id; + return (is_file($file) && (filemtime($file) >= $srcMtime)); + } + + /** + * Send the cached content to output + * + * @param string $id cache id (e.g. a filename) + */ + public function display($id) + { + if ($this->_locking) { + $fp = fopen($this->_path . '/' . $id, 'rb'); + flock($fp, LOCK_SH); + fpassthru($fp); + flock($fp, LOCK_UN); + fclose($fp); + } else { + readfile($this->_path . '/' . $id); + } + } + + /** + * Fetch the cached content + * + * @param string $id cache id (e.g. a filename) + * + * @return string + */ + public function fetch($id) + { + if ($this->_locking) { + $fp = fopen($this->_path . '/' . $id, 'rb'); + flock($fp, LOCK_SH); + $ret = stream_get_contents($fp); + flock($fp, LOCK_UN); + fclose($fp); + return $ret; + } else { + return file_get_contents($this->_path . '/' . $id); + } + } + + /** + * Fetch the cache path used + * + * @return string + */ + public function getPath() + { + return $this->_path; + } + + private $_path = null; + private $_locking = null; +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Cache/Memcache.php b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/Memcache.php new file mode 100644 index 0000000000..2b81e7a329 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Cache/Memcache.php @@ -0,0 +1,137 @@ + + * // fall back to disk caching if memcache can't connect + * $memcache = new Memcache; + * if ($memcache->connect('localhost', 11211)) { + * Minify::setCache(new Minify_Cache_Memcache($memcache)); + * } else { + * Minify::setCache(); + * } + * + **/ +class Minify_Cache_Memcache { + + /** + * Create a Minify_Cache_Memcache object, to be passed to + * Minify::setCache(). + * + * @param Memcache $memcache already-connected instance + * + * @param int $expire seconds until expiration (default = 0 + * meaning the item will not get an expiration date) + * + * @return null + */ + public function __construct($memcache, $expire = 0) + { + $this->_mc = $memcache; + $this->_exp = $expire; + } + + /** + * Write data to cache. + * + * @param string $id cache id + * + * @param string $data + * + * @return bool success + */ + public function store($id, $data) + { + return $this->_mc->set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", 0, $this->_exp); + } + + + /** + * Get the size of a cache entry + * + * @param string $id cache id + * + * @return int size in bytes + */ + public function getSize($id) + { + return $this->_fetch($id) + ? strlen($this->_data) + : false; + } + + /** + * Does a valid cache entry exist? + * + * @param string $id cache id + * + * @param int $srcMtime mtime of the original source file(s) + * + * @return bool exists + */ + public function isValid($id, $srcMtime) + { + return ($this->_fetch($id) && ($this->_lm >= $srcMtime)); + } + + /** + * Send the cached content to output + * + * @param string $id cache id + */ + public function display($id) + { + echo $this->_fetch($id) + ? $this->_data + : ''; + } + + /** + * Fetch the cached content + * + * @param string $id cache id + * + * @return string + */ + public function fetch($id) + { + return $this->_fetch($id) + ? $this->_data + : ''; + } + + private $_mc = null; + private $_exp = null; + + // cache of most recently fetched id + private $_lm = null; + private $_data = null; + private $_id = null; + + /** + * Fetch data and timestamp from memcache, store in instance + * + * @param string $id + * + * @return bool success + */ + private function _fetch($id) + { + if ($this->_id === $id) { + return true; + } + $ret = $this->_mc->get($id); + if (false === $ret) { + $this->_id = null; + return false; + } + list($this->_lm, $this->_data) = explode('|', $ret, 2); + $this->_id = $id; + return true; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/CommentPreserver.php b/plugins/Minify/extlib/minify/min/lib/Minify/CommentPreserver.php new file mode 100644 index 0000000000..f56eb3461c --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/CommentPreserver.php @@ -0,0 +1,90 @@ + + */ +class Minify_CommentPreserver { + + /** + * String to be prepended to each preserved comment + * + * @var string + */ + public static $prepend = "\n"; + + /** + * String to be appended to each preserved comment + * + * @var string + */ + public static $append = "\n"; + + /** + * Process a string outside of C-style comments that begin with "/*!" + * + * On each non-empty string outside these comments, the given processor + * function will be called. The first "!" will be removed from the + * preserved comments, and the comments will be surrounded by + * Minify_CommentPreserver::$preprend and Minify_CommentPreserver::$append. + * + * @param string $content + * @param callback $processor function + * @param array $args array of extra arguments to pass to the processor + * function (default = array()) + * @return string + */ + public static function process($content, $processor, $args = array()) + { + $ret = ''; + while (true) { + list($beforeComment, $comment, $afterComment) = self::_nextComment($content); + if ('' !== $beforeComment) { + $callArgs = $args; + array_unshift($callArgs, $beforeComment); + $ret .= call_user_func_array($processor, $callArgs); + } + if (false === $comment) { + break; + } + $ret .= $comment; + $content = $afterComment; + } + return $ret; + } + + /** + * Extract comments that YUI Compressor preserves. + * + * @param string $in input + * + * @return array 3 elements are returned. If a YUI comment is found, the + * 2nd element is the comment and the 1st and 2nd are the surrounding + * strings. If no comment is found, the entire string is returned as the + * 1st element and the other two are false. + */ + private static function _nextComment($in) + { + if ( + false === ($start = strpos($in, '/*!')) + || false === ($end = strpos($in, '*/', $start + 3)) + ) { + return array($in, false, false); + } + $ret = array( + substr($in, 0, $start) + ,self::$prepend . '/*' . substr($in, $start + 3, $end - $start - 1) . self::$append + ); + $endChars = (strlen($in) - $end - 2); + $ret[] = (0 === $endChars) + ? '' + : substr($in, -$endChars); + return $ret; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Base.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Base.php new file mode 100644 index 0000000000..84889b3f0c --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Base.php @@ -0,0 +1,202 @@ + + */ +abstract class Minify_Controller_Base { + + /** + * Setup controller sources and set an needed options for Minify::source + * + * You must override this method in your subclass controller to set + * $this->sources. If the request is NOT valid, make sure $this->sources + * is left an empty array. Then strip any controller-specific options from + * $options and return it. To serve files, $this->sources must be an array of + * Minify_Source objects. + * + * @param array $options controller and Minify options + * + * return array $options Minify::serve options + */ + abstract public function setupSources($options); + + /** + * Get default Minify options for this controller. + * + * Override in subclass to change defaults + * + * @return array options for Minify + */ + public function getDefaultMinifyOptions() { + return array( + 'isPublic' => true + ,'encodeOutput' => function_exists('gzdeflate') + ,'encodeMethod' => null // determine later + ,'encodeLevel' => 9 + ,'minifierOptions' => array() // no minifier options + ,'contentTypeCharset' => 'utf-8' + ,'maxAge' => 1800 // 30 minutes + ,'rewriteCssUris' => true + ,'bubbleCssImports' => false + ,'quiet' => false // serve() will send headers and output + ,'debug' => false + + // if you override this, the response code MUST be directly after + // the first space. + ,'badRequestHeader' => 'HTTP/1.0 400 Bad Request' + + // callback function to see/modify content of all sources + ,'postprocessor' => null + // file to require to load preprocessor + ,'postprocessorRequire' => null + ); + } + + /** + * Get default minifiers for this controller. + * + * Override in subclass to change defaults + * + * @return array minifier callbacks for common types + */ + public function getDefaultMinifers() { + $ret[Minify::TYPE_JS] = array('JSMin', 'minify'); + $ret[Minify::TYPE_CSS] = array('Minify_CSS', 'minify'); + $ret[Minify::TYPE_HTML] = array('Minify_HTML', 'minify'); + return $ret; + } + + /** + * Load any code necessary to execute the given minifier callback. + * + * The controller is responsible for loading minification code on demand + * via this method. This built-in function will only load classes for + * static method callbacks where the class isn't already defined. It uses + * the PEAR convention, so, given array('Jimmy_Minifier', 'minCss'), this + * function will include 'Jimmy/Minifier.php'. + * + * If you need code loaded on demand and this doesn't suit you, you'll need + * to override this function in your subclass. + * @see Minify_Controller_Page::loadMinifier() + * + * @param callback $minifierCallback callback of minifier function + * + * @return null + */ + public function loadMinifier($minifierCallback) + { + if (is_array($minifierCallback) + && is_string($minifierCallback[0]) + && !class_exists($minifierCallback[0], false)) { + + require str_replace('_', '/', $minifierCallback[0]) . '.php'; + } + } + + /** + * Is a user-given file within an allowable directory, existing, + * and having an extension js/css/html/txt ? + * + * This is a convenience function for controllers that have to accept + * user-given paths + * + * @param string $file full file path (already processed by realpath()) + * + * @param array $safeDirs directories where files are safe to serve. Files can also + * be in subdirectories of these directories. + * + * @return bool file is safe + */ + public static function _fileIsSafe($file, $safeDirs) + { + $pathOk = false; + foreach ((array)$safeDirs as $safeDir) { + if (strpos($file, $safeDir) === 0) { + $pathOk = true; + break; + } + } + $base = basename($file); + if (! $pathOk || ! is_file($file) || $base[0] === '.') { + return false; + } + list($revExt) = explode('.', strrev($base)); + return in_array(strrev($revExt), array('js', 'css', 'html', 'txt')); + } + + /** + * @var array instances of Minify_Source, which provide content and + * any individual minification needs. + * + * @see Minify_Source + */ + public $sources = array(); + + /** + * Mix in default controller options with user-given options + * + * @param array $options user options + * + * @return array mixed options + */ + public final function mixInDefaultOptions($options) + { + $ret = array_merge( + $this->getDefaultMinifyOptions(), $options + ); + if (! isset($options['minifiers'])) { + $options['minifiers'] = array(); + } + $ret['minifiers'] = array_merge( + $this->getDefaultMinifers(), $options['minifiers'] + ); + return $ret; + } + + /** + * Analyze sources (if there are any) and set $options 'contentType' + * and 'lastModifiedTime' if they already aren't. + * + * @param array $options options for Minify + * + * @return array options for Minify + */ + public final function analyzeSources($options = array()) + { + if ($this->sources) { + if (! isset($options['contentType'])) { + $options['contentType'] = Minify_Source::getContentType($this->sources); + } + // last modified is needed for caching, even if setExpires is set + if (! isset($options['lastModifiedTime'])) { + $max = 0; + foreach ($this->sources as $source) { + $max = max($source->lastModified, $max); + } + $options['lastModifiedTime'] = $max; + } + } + return $options; + } + + /** + * Send message to the Minify logger + * @param string $msg + * @return null + */ + protected function log($msg) { + require_once 'Minify/Logger.php'; + Minify_Logger::log($msg); + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Files.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Files.php new file mode 100644 index 0000000000..83f028adf7 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Files.php @@ -0,0 +1,78 @@ + + * Minify::serve('Files', array( + * 'files' => array( + * '//js/jquery.js' + * ,'//js/plugins.js' + * ,'/home/username/file.js' + * ) + * )); + * + * + * As a shortcut, the controller will replace "//" at the beginning + * of a filename with $_SERVER['DOCUMENT_ROOT'] . '/'. + * + * @package Minify + * @author Stephen Clay + */ +class Minify_Controller_Files extends Minify_Controller_Base { + + /** + * Set up file sources + * + * @param array $options controller and Minify options + * @return array Minify options + * + * Controller options: + * + * 'files': (required) array of complete file paths, or a single path + */ + public function setupSources($options) { + // strip controller options + + $files = $options['files']; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } + unset($options['files']); + + $sources = array(); + foreach ($files as $file) { + if ($file instanceof Minify_Source) { + $sources[] = $file; + continue; + } + if (0 === strpos($file, '//')) { + $file = $_SERVER['DOCUMENT_ROOT'] . substr($file, 1); + } + $realPath = realpath($file); + if (is_file($realPath)) { + $sources[] = new Minify_Source(array( + 'filepath' => $realPath + )); + } else { + $this->log("The path \"{$file}\" could not be found (or was not a file)"); + return $options; + } + } + if ($sources) { + $this->sources = $sources; + } + return $options; + } +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Groups.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Groups.php new file mode 100644 index 0000000000..1ac57703ad --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Groups.php @@ -0,0 +1,94 @@ + + * Minify::serve('Groups', array( + * 'groups' => array( + * 'css' => array('//css/type.css', '//css/layout.css') + * ,'js' => array('//js/jquery.js', '//js/site.js') + * ) + * )); + * + * + * If the above code were placed in /serve.php, it would enable the URLs + * /serve.php/js and /serve.php/css + * + * As a shortcut, the controller will replace "//" at the beginning + * of a filename with $_SERVER['DOCUMENT_ROOT'] . '/'. + * + * @package Minify + * @author Stephen Clay + */ +class Minify_Controller_Groups extends Minify_Controller_Base { + + /** + * Set up groups of files as sources + * + * @param array $options controller and Minify options + * @return array Minify options + * + * Controller options: + * + * 'groups': (required) array mapping PATH_INFO strings to arrays + * of complete file paths. @see Minify_Controller_Groups + */ + public function setupSources($options) { + // strip controller options + $groups = $options['groups']; + unset($options['groups']); + + // mod_fcgid places PATH_INFO in ORIG_PATH_INFO + $pi = isset($_SERVER['ORIG_PATH_INFO']) + ? substr($_SERVER['ORIG_PATH_INFO'], 1) + : (isset($_SERVER['PATH_INFO']) + ? substr($_SERVER['PATH_INFO'], 1) + : false + ); + if (false === $pi || ! isset($groups[$pi])) { + // no PATH_INFO or not a valid group + $this->log("Missing PATH_INFO or no group set for \"$pi\""); + return $options; + } + $sources = array(); + + $files = $groups[$pi]; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } + foreach ($files as $file) { + if ($file instanceof Minify_Source) { + $sources[] = $file; + continue; + } + if (0 === strpos($file, '//')) { + $file = $_SERVER['DOCUMENT_ROOT'] . substr($file, 1); + } + $realPath = realpath($file); + if (is_file($realPath)) { + $sources[] = new Minify_Source(array( + 'filepath' => $realPath + )); + } else { + $this->log("The path \"{$file}\" could not be found (or was not a file)"); + return $options; + } + } + if ($sources) { + $this->sources = $sources; + } + return $options; + } +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/MinApp.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/MinApp.php new file mode 100644 index 0000000000..9582d292ca --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/MinApp.php @@ -0,0 +1,132 @@ + + */ +class Minify_Controller_MinApp extends Minify_Controller_Base { + + /** + * Set up groups of files as sources + * + * @param array $options controller and Minify options + * @return array Minify options + * + */ + public function setupSources($options) { + // filter controller options + $cOptions = array_merge( + array( + 'allowDirs' => '//' + ,'groupsOnly' => false + ,'groups' => array() + ,'maxFiles' => 10 + ) + ,(isset($options['minApp']) ? $options['minApp'] : array()) + ); + unset($options['minApp']); + $sources = array(); + if (isset($_GET['g'])) { + // try groups + if (! isset($cOptions['groups'][$_GET['g']])) { + $this->log("A group configuration for \"{$_GET['g']}\" was not set"); + return $options; + } + + $files = $cOptions['groups'][$_GET['g']]; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } + foreach ($files as $file) { + if ($file instanceof Minify_Source) { + $sources[] = $file; + continue; + } + if (0 === strpos($file, '//')) { + $file = $_SERVER['DOCUMENT_ROOT'] . substr($file, 1); + } + $file = realpath($file); + if (is_file($file)) { + $sources[] = new Minify_Source(array( + 'filepath' => $file + )); + } else { + $this->log("The path \"{$file}\" could not be found (or was not a file)"); + return $options; + } + } + } elseif (! $cOptions['groupsOnly'] && isset($_GET['f'])) { + // try user files + // The following restrictions are to limit the URLs that minify will + // respond to. Ideally there should be only one way to reference a file. + if (// verify at least one file, files are single comma separated, + // and are all same extension + ! preg_match('/^[^,]+\\.(css|js)(?:,[^,]+\\.\\1)*$/', $_GET['f']) + // no "//" + || strpos($_GET['f'], '//') !== false + // no "\" + || strpos($_GET['f'], '\\') !== false + // no "./" + || preg_match('/(?:^|[^\\.])\\.\\//', $_GET['f']) + ) { + $this->log("GET param 'f' invalid (see MinApp.php line 63)"); + return $options; + } + $files = explode(',', $_GET['f']); + if (count($files) > $cOptions['maxFiles'] || $files != array_unique($files)) { + $this->log("Too many or duplicate files specified"); + return $options; + } + if (isset($_GET['b'])) { + // check for validity + if (preg_match('@^[^/]+(?:/[^/]+)*$@', $_GET['b']) + && false === strpos($_GET['b'], '..') + && $_GET['b'] !== '.') { + // valid base + $base = "/{$_GET['b']}/"; + } else { + $this->log("GET param 'b' invalid (see MinApp.php line 84)"); + return $options; + } + } else { + $base = '/'; + } + $allowDirs = array(); + foreach ((array)$cOptions['allowDirs'] as $allowDir) { + $allowDirs[] = realpath(str_replace('//', $_SERVER['DOCUMENT_ROOT'] . '/', $allowDir)); + } + foreach ($files as $file) { + $path = $_SERVER['DOCUMENT_ROOT'] . $base . $file; + $file = realpath($path); + if (false === $file) { + $this->log("Path \"{$path}\" failed realpath()"); + return $options; + } elseif (! parent::_fileIsSafe($file, $allowDirs)) { + $this->log("Path \"{$path}\" failed Minify_Controller_Base::_fileIsSafe()"); + return $options; + } else { + $sources[] = new Minify_Source(array( + 'filepath' => $file + )); + } + } + } + if ($sources) { + $this->sources = $sources; + } else { + $this->log("No sources to serve"); + } + return $options; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Page.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Page.php new file mode 100644 index 0000000000..fa4599abd9 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Page.php @@ -0,0 +1,82 @@ + + */ +class Minify_Controller_Page extends Minify_Controller_Base { + + /** + * Set up source of HTML content + * + * @param array $options controller and Minify options + * @return array Minify options + * + * Controller options: + * + * 'content': (required) HTML markup + * + * 'id': (required) id of page (string for use in server-side caching) + * + * 'lastModifiedTime': timestamp of when this content changed. This + * is recommended to allow both server and client-side caching. + * + * 'minifyAll': should all CSS and Javascript blocks be individually + * minified? (default false) + * + * @todo Add 'file' option to read HTML file. + */ + public function setupSources($options) { + if (isset($options['file'])) { + $sourceSpec = array( + 'filepath' => $options['file'] + ); + } else { + // strip controller options + $sourceSpec = array( + 'content' => $options['content'] + ,'id' => $options['id'] + ); + unset($options['content'], $options['id']); + } + if (isset($options['minifyAll'])) { + // this will be the 2nd argument passed to Minify_HTML::minify() + $sourceSpec['minifyOptions'] = array( + 'cssMinifier' => array('Minify_CSS', 'minify') + ,'jsMinifier' => array('JSMin', 'minify') + ); + $this->_loadCssJsMinifiers = true; + unset($options['minifyAll']); + } + $this->sources[] = new Minify_Source($sourceSpec); + + $options['contentType'] = Minify::TYPE_HTML; + return $options; + } + + protected $_loadCssJsMinifiers = false; + + /** + * @see Minify_Controller_Base::loadMinifier() + */ + public function loadMinifier($minifierCallback) + { + if ($this->_loadCssJsMinifiers) { + // Minify will not call for these so we must manually load + // them when Minify/HTML.php is called for. + require_once 'Minify/CSS.php'; + require_once 'JSMin.php'; + } + parent::loadMinifier($minifierCallback); // load Minify/HTML.php + } +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Version1.php b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Version1.php new file mode 100644 index 0000000000..1861aabc11 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Controller/Version1.php @@ -0,0 +1,118 @@ + + * Minify::serve('Version1'); + * + * + * @package Minify + * @author Stephen Clay + */ +class Minify_Controller_Version1 extends Minify_Controller_Base { + + /** + * Set up groups of files as sources + * + * @param array $options controller and Minify options + * @return array Minify options + * + */ + public function setupSources($options) { + self::_setupDefines(); + if (MINIFY_USE_CACHE) { + $cacheDir = defined('MINIFY_CACHE_DIR') + ? MINIFY_CACHE_DIR + : ''; + Minify::setCache($cacheDir); + } + $options['badRequestHeader'] = 'HTTP/1.0 404 Not Found'; + $options['contentTypeCharset'] = MINIFY_ENCODING; + + // The following restrictions are to limit the URLs that minify will + // respond to. Ideally there should be only one way to reference a file. + if (! isset($_GET['files']) + // verify at least one file, files are single comma separated, + // and are all same extension + || ! preg_match('/^[^,]+\\.(css|js)(,[^,]+\\.\\1)*$/', $_GET['files'], $m) + // no "//" (makes URL rewriting easier) + || strpos($_GET['files'], '//') !== false + // no "\" + || strpos($_GET['files'], '\\') !== false + // no "./" + || preg_match('/(?:^|[^\\.])\\.\\//', $_GET['files']) + ) { + return $options; + } + $extension = $m[1]; + + $files = explode(',', $_GET['files']); + if (count($files) > MINIFY_MAX_FILES) { + return $options; + } + + // strings for prepending to relative/absolute paths + $prependRelPaths = dirname($_SERVER['SCRIPT_FILENAME']) + . DIRECTORY_SEPARATOR; + $prependAbsPaths = $_SERVER['DOCUMENT_ROOT']; + + $sources = array(); + $goodFiles = array(); + $hasBadSource = false; + + $allowDirs = isset($options['allowDirs']) + ? $options['allowDirs'] + : MINIFY_BASE_DIR; + + foreach ($files as $file) { + // prepend appropriate string for abs/rel paths + $file = ($file[0] === '/' ? $prependAbsPaths : $prependRelPaths) . $file; + // make sure a real file! + $file = realpath($file); + // don't allow unsafe or duplicate files + if (parent::_fileIsSafe($file, $allowDirs) + && !in_array($file, $goodFiles)) + { + $goodFiles[] = $file; + $srcOptions = array( + 'filepath' => $file + ); + $this->sources[] = new Minify_Source($srcOptions); + } else { + $hasBadSource = true; + break; + } + } + if ($hasBadSource) { + $this->sources = array(); + } + if (! MINIFY_REWRITE_CSS_URLS) { + $options['rewriteCssUris'] = false; + } + return $options; + } + + private static function _setupDefines() + { + $defaults = array( + 'MINIFY_BASE_DIR' => realpath($_SERVER['DOCUMENT_ROOT']) + ,'MINIFY_ENCODING' => 'utf-8' + ,'MINIFY_MAX_FILES' => 16 + ,'MINIFY_REWRITE_CSS_URLS' => true + ,'MINIFY_USE_CACHE' => true + ); + foreach ($defaults as $const => $val) { + if (! defined($const)) { + define($const, $val); + } + } + } +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/HTML.php b/plugins/Minify/extlib/minify/min/lib/Minify/HTML.php new file mode 100644 index 0000000000..fb5c1e9829 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/HTML.php @@ -0,0 +1,245 @@ + + */ +class Minify_HTML { + + /** + * "Minify" an HTML page + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * @return string + */ + public static function minify($html, $options = array()) { + $min = new Minify_HTML($html, $options); + return $min->process(); + } + + + /** + * Create a minifier object + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * @return null + */ + public function __construct($html, $options = array()) + { + $this->_html = str_replace("\r\n", "\n", trim($html)); + if (isset($options['xhtml'])) { + $this->_isXhtml = (bool)$options['xhtml']; + } + if (isset($options['cssMinifier'])) { + $this->_cssMinifier = $options['cssMinifier']; + } + if (isset($options['jsMinifier'])) { + $this->_jsMinifier = $options['jsMinifier']; + } + } + + + /** + * Minify the markeup given in the constructor + * + * @return string + */ + public function process() + { + if ($this->_isXhtml === null) { + $this->_isXhtml = (false !== strpos($this->_html, '_replacementHash = 'MINIFYHTML' . md5($_SERVER['REQUEST_TIME']); + $this->_placeholders = array(); + + // replace SCRIPTs (and minify) with placeholders + $this->_html = preg_replace_callback( + '/(\\s*)(]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i' + ,array($this, '_removeScriptCB') + ,$this->_html); + + // replace STYLEs (and minify) with placeholders + $this->_html = preg_replace_callback( + '/\\s*(]*?>)([\\s\\S]*?)<\\/style>\\s*/i' + ,array($this, '_removeStyleCB') + ,$this->_html); + + // remove HTML comments (not containing IE conditional comments). + $this->_html = preg_replace_callback( + '//' + ,array($this, '_commentCB') + ,$this->_html); + + // replace PREs with placeholders + $this->_html = preg_replace_callback('/\\s*(]*?>[\\s\\S]*?<\\/pre>)\\s*/i' + ,array($this, '_removePreCB') + ,$this->_html); + + // replace TEXTAREAs with placeholders + $this->_html = preg_replace_callback( + '/\\s*(]*?>[\\s\\S]*?<\\/textarea>)\\s*/i' + ,array($this, '_removeTextareaCB') + ,$this->_html); + + // trim each line. + // @todo take into account attribute values that span multiple lines. + $this->_html = preg_replace('/^\\s+|\\s+$/m', '', $this->_html); + + // remove ws around block/undisplayed elements + $this->_html = preg_replace('/\\s+(<\\/?(?:area|base(?:font)?|blockquote|body' + .'|caption|center|cite|col(?:group)?|dd|dir|div|dl|dt|fieldset|form' + .'|frame(?:set)?|h[1-6]|head|hr|html|legend|li|link|map|menu|meta' + .'|ol|opt(?:group|ion)|p|param|t(?:able|body|head|d|h||r|foot|itle)' + .'|ul)\\b[^>]*>)/i', '$1', $this->_html); + + // remove ws outside of all elements + $this->_html = preg_replace_callback( + '/>([^<]+)_html); + + // use newlines before 1st attribute in open tags (to limit line lengths) + $this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $this->_html); + + // fill placeholders + $this->_html = str_replace( + array_keys($this->_placeholders) + ,array_values($this->_placeholders) + ,$this->_html + ); + return $this->_html; + } + + protected function _commentCB($m) + { + return (0 === strpos($m[1], '[') || false !== strpos($m[1], '_replacementHash . count($this->_placeholders) . '%'; + $this->_placeholders[$placeholder] = $content; + return $placeholder; + } + + protected $_isXhtml = null; + protected $_replacementHash = null; + protected $_placeholders = array(); + protected $_cssMinifier = null; + protected $_jsMinifier = null; + + protected function _outsideTagCB($m) + { + return '>' . preg_replace('/^\\s+|\\s+$/', ' ', $m[1]) . '<'; + } + + protected function _removePreCB($m) + { + return $this->_reservePlace($m[1]); + } + + protected function _removeTextareaCB($m) + { + return $this->_reservePlace($m[1]); + } + + protected function _removeStyleCB($m) + { + $openStyle = $m[1]; + $css = $m[2]; + // remove HTML comments + $css = preg_replace('/(?:^\\s*\\s*$)/', '', $css); + + // remove CDATA section markers + $css = $this->_removeCdata($css); + + // minify + $minifier = $this->_cssMinifier + ? $this->_cssMinifier + : 'trim'; + $css = call_user_func($minifier, $css); + + return $this->_reservePlace($this->_needsCdata($css) + ? "{$openStyle}/**/" + : "{$openStyle}{$css}" + ); + } + + protected function _removeScriptCB($m) + { + $openScript = $m[2]; + $js = $m[3]; + + // whitespace surrounding? preserve at least one space + $ws1 = ($m[1] === '') ? '' : ' '; + $ws2 = ($m[4] === '') ? '' : ' '; + + // remove HTML comments (and ending "//" if present) + $js = preg_replace('/(?:^\\s*\\s*$)/', '', $js); + + // remove CDATA section markers + $js = $this->_removeCdata($js); + + // minify + $minifier = $this->_jsMinifier + ? $this->_jsMinifier + : 'trim'; + $js = call_user_func($minifier, $js); + + return $this->_reservePlace($this->_needsCdata($js) + ? "{$ws1}{$openScript}/**/{$ws2}" + : "{$ws1}{$openScript}{$js}{$ws2}" + ); + } + + protected function _removeCdata($str) + { + return (false !== strpos($str, ''), '', $str) + : $str; + } + + protected function _needsCdata($str) + { + return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/', $str)); + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/ImportProcessor.php b/plugins/Minify/extlib/minify/min/lib/Minify/ImportProcessor.php new file mode 100644 index 0000000000..0d6d90a816 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/ImportProcessor.php @@ -0,0 +1,157 @@ + + */ +class Minify_ImportProcessor { + + public static $filesIncluded = array(); + + public static function process($file) + { + self::$filesIncluded = array(); + self::$_isCss = (strtolower(substr($file, -4)) === '.css'); + $obj = new Minify_ImportProcessor(dirname($file)); + return $obj->_getContent($file); + } + + // allows callback funcs to know the current directory + private $_currentDir = null; + + // allows _importCB to write the fetched content back to the obj + private $_importedContent = ''; + + private static $_isCss = null; + + private function __construct($currentDir) + { + $this->_currentDir = $currentDir; + } + + private function _getContent($file) + { + $file = realpath($file); + if (! $file + || in_array($file, self::$filesIncluded) + || false === ($content = @file_get_contents($file)) + ) { + // file missing, already included, or failed read + return ''; + } + self::$filesIncluded[] = realpath($file); + $this->_currentDir = dirname($file); + + // remove UTF-8 BOM if present + if (pack("CCC",0xef,0xbb,0xbf) === substr($content, 0, 3)) { + $content = substr($content, 3); + } + // ensure uniform EOLs + $content = str_replace("\r\n", "\n", $content); + + // process @imports + $content = preg_replace_callback( + '/ + @import\\s+ + (?:url\\(\\s*)? # maybe url( + [\'"]? # maybe quote + (.*?) # 1 = URI + [\'"]? # maybe end quote + (?:\\s*\\))? # maybe ) + ([a-zA-Z,\\s]*)? # 2 = media list + ; # end token + /x' + ,array($this, '_importCB') + ,$content + ); + + if (self::$_isCss) { + // rewrite remaining relative URIs + $content = preg_replace_callback( + '/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + ,array($this, '_urlCB') + ,$content + ); + } + + return $this->_importedContent . $content; + } + + private function _importCB($m) + { + $url = $m[1]; + $mediaList = preg_replace('/\\s+/', '', $m[2]); + + if (strpos($url, '://') > 0) { + // protocol, leave in place for CSS, comment for JS + return self::$_isCss + ? $m[0] + : "/* Minify_ImportProcessor will not include remote content */"; + } + if ('/' === $url[0]) { + // protocol-relative or root path + $url = ltrim($url, '/'); + $file = realpath($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR + . strtr($url, '/', DIRECTORY_SEPARATOR); + } else { + // relative to current path + $file = $this->_currentDir . DIRECTORY_SEPARATOR + . strtr($url, '/', DIRECTORY_SEPARATOR); + } + $obj = new Minify_ImportProcessor(dirname($file)); + $content = $obj->_getContent($file); + if ('' === $content) { + // failed. leave in place for CSS, comment for JS + return self::$_isCss + ? $m[0] + : "/* Minify_ImportProcessor could not fetch '{$file}' */";; + } + return (!self::$_isCss || preg_match('@(?:^$|\\ball\\b)@', $mediaList)) + ? $content + : "@media {$mediaList} {\n{$content}\n}\n"; + } + + private function _urlCB($m) + { + // $m[1] is either quoted or not + $quote = ($m[1][0] === "'" || $m[1][0] === '"') + ? $m[1][0] + : ''; + $url = ($quote === '') + ? $m[1] + : substr($m[1], 1, strlen($m[1]) - 2); + if ('/' !== $url[0]) { + if (strpos($url, '//') > 0) { + // probably starts with protocol, do not alter + } else { + // prepend path with current dir separator (OS-independent) + $path = $this->_currentDir + . DIRECTORY_SEPARATOR . strtr($url, '/', DIRECTORY_SEPARATOR); + // strip doc root + $path = substr($path, strlen(realpath($_SERVER['DOCUMENT_ROOT']))); + // fix to absolute URL + $url = strtr($path, '/\\', '//'); + // remove /./ and /../ where possible + $url = str_replace('/./', '/', $url); + // inspired by patch from Oleg Cherniy + do { + $url = preg_replace('@/[^/]+/\\.\\./@', '/', $url, 1, $changed); + } while ($changed); + } + } + return "url({$quote}{$url}{$quote})"; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Lines.php b/plugins/Minify/extlib/minify/min/lib/Minify/Lines.php new file mode 100644 index 0000000000..6f94fb63c4 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Lines.php @@ -0,0 +1,131 @@ + + * @author Adam Pedersen (Issue 55 fix) + */ +class Minify_Lines { + + /** + * Add line numbers in C-style comments + * + * This uses a very basic parser easily fooled by comment tokens inside + * strings or regexes, but, otherwise, generally clean code will not be + * mangled. URI rewriting can also be performed. + * + * @param string $content + * + * @param array $options available options: + * + * 'id': (optional) string to identify file. E.g. file name/path + * + * 'currentDir': (default null) if given, this is assumed to be the + * directory of the current CSS file. Using this, minify will rewrite + * all relative URIs in import/url declarations to correctly point to + * the desired files, and prepend a comment with debugging information about + * this process. + * + * @return string + */ + public static function minify($content, $options = array()) + { + $id = (isset($options['id']) && $options['id']) + ? $options['id'] + : ''; + $content = str_replace("\r\n", "\n", $content); + $lines = explode("\n", $content); + $numLines = count($lines); + // determine left padding + $padTo = strlen($numLines); + $inComment = false; + $i = 0; + $newLines = array(); + while (null !== ($line = array_shift($lines))) { + if (('' !== $id) && (0 == $i % 50)) { + array_push($newLines, '', "/* {$id} */", ''); + } + ++$i; + $newLines[] = self::_addNote($line, $i, $inComment, $padTo); + $inComment = self::_eolInComment($line, $inComment); + } + $content = implode("\n", $newLines) . "\n"; + + // check for desired URI rewriting + if (isset($options['currentDir'])) { + require_once 'Minify/CSS/UriRewriter.php'; + Minify_CSS_UriRewriter::$debugText = ''; + $content = Minify_CSS_UriRewriter::rewrite( + $content + ,$options['currentDir'] + ,isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT'] + ,isset($options['symlinks']) ? $options['symlinks'] : array() + ); + $content = "/* Minify_CSS_UriRewriter::\$debugText\n\n" + . Minify_CSS_UriRewriter::$debugText . "*/\n" + . $content; + } + + return $content; + } + + /** + * Is the parser within a C-style comment at the end of this line? + * + * @param string $line current line of code + * + * @param bool $inComment was the parser in a comment at the + * beginning of the line? + * + * @return bool + */ + private static function _eolInComment($line, $inComment) + { + while (strlen($line)) { + $search = $inComment + ? '*/' + : '/*'; + $pos = strpos($line, $search); + if (false === $pos) { + return $inComment; + } else { + if ($pos == 0 + || ($inComment + ? substr($line, $pos, 3) + : substr($line, $pos-1, 3)) != '*/*') + { + $inComment = ! $inComment; + } + $line = substr($line, $pos + 2); + } + } + return $inComment; + } + + /** + * Prepend a comment (or note) to the given line + * + * @param string $line current line of code + * + * @param string $note content of note/comment + * + * @param bool $inComment was the parser in a comment at the + * beginning of the line? + * + * @param int $padTo minimum width of comment + * + * @return string + */ + private static function _addNote($line, $note, $inComment, $padTo) + { + return $inComment + ? '/* ' . str_pad($note, $padTo, ' ', STR_PAD_RIGHT) . ' *| ' . $line + : '/* ' . str_pad($note, $padTo, ' ', STR_PAD_RIGHT) . ' */ ' . $line; + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Logger.php b/plugins/Minify/extlib/minify/min/lib/Minify/Logger.php new file mode 100644 index 0000000000..7844eea356 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Logger.php @@ -0,0 +1,45 @@ + + */ +class Minify_Logger { + + /** + * Set logger object. + * + * The object should have a method "log" that accepts a value as 1st argument and + * an optional string label as the 2nd. + * + * @param mixed $obj or a "falsey" value to disable + * @return null + */ + public static function setLogger($obj = null) { + self::$_logger = $obj + ? $obj + : null; + } + + /** + * Pass a message to the logger (if set) + * + * @param string $msg message to log + * @return null + */ + public static function log($msg, $label = 'Minify') { + if (! self::$_logger) return; + self::$_logger->log($msg, $label); + } + + /** + * @var mixed logger object (like FirePHP) or null (i.e. no logger available) + */ + private static $_logger = null; +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Packer.php b/plugins/Minify/extlib/minify/min/lib/Minify/Packer.php new file mode 100644 index 0000000000..949c3eef04 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Packer.php @@ -0,0 +1,37 @@ +pack()); + } +} diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/Source.php b/plugins/Minify/extlib/minify/min/lib/Minify/Source.php new file mode 100644 index 0000000000..5a85d10d0d --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/Source.php @@ -0,0 +1,187 @@ + + */ +class Minify_Source { + + /** + * @var int time of last modification + */ + public $lastModified = null; + + /** + * @var callback minifier function specifically for this source. + */ + public $minifier = null; + + /** + * @var array minification options specific to this source. + */ + public $minifyOptions = null; + + /** + * @var string full path of file + */ + public $filepath = null; + + /** + * @var string HTTP Content Type (Minify requires one of the constants Minify::TYPE_*) + */ + public $contentType = null; + + /** + * Create a Minify_Source + * + * In the $spec array(), you can either provide a 'filepath' to an existing + * file (existence will not be checked!) or give 'id' (unique string for + * the content), 'content' (the string content) and 'lastModified' + * (unixtime of last update). + * + * As a shortcut, the controller will replace "//" at the beginning + * of a filepath with $_SERVER['DOCUMENT_ROOT'] . '/'. + * + * @param array $spec options + */ + public function __construct($spec) + { + if (isset($spec['filepath'])) { + if (0 === strpos($spec['filepath'], '//')) { + $spec['filepath'] = $_SERVER['DOCUMENT_ROOT'] . substr($spec['filepath'], 1); + } + $segments = explode('.', $spec['filepath']); + $ext = strtolower(array_pop($segments)); + switch ($ext) { + case 'js' : $this->contentType = 'application/x-javascript'; + break; + case 'css' : $this->contentType = 'text/css'; + break; + case 'htm' : // fallthrough + case 'html' : $this->contentType = 'text/html'; + break; + } + $this->filepath = $spec['filepath']; + $this->_id = $spec['filepath']; + $this->lastModified = filemtime($spec['filepath']) + // offset for Windows uploaders with out of sync clocks + + round(Minify::$uploaderHoursBehind * 3600); + } elseif (isset($spec['id'])) { + $this->_id = 'id::' . $spec['id']; + if (isset($spec['content'])) { + $this->_content = $spec['content']; + } else { + $this->_getContentFunc = $spec['getContentFunc']; + } + $this->lastModified = isset($spec['lastModified']) + ? $spec['lastModified'] + : time(); + } + if (isset($spec['contentType'])) { + $this->contentType = $spec['contentType']; + } + if (isset($spec['minifier'])) { + $this->minifier = $spec['minifier']; + } + if (isset($spec['minifyOptions'])) { + $this->minifyOptions = $spec['minifyOptions']; + } + } + + /** + * Get content + * + * @return string + */ + public function getContent() + { + $content = (null !== $this->filepath) + ? file_get_contents($this->filepath) + : ((null !== $this->_content) + ? $this->_content + : call_user_func($this->_getContentFunc, $this->_id) + ); + // remove UTF-8 BOM if present + return (pack("CCC",0xef,0xbb,0xbf) === substr($content, 0, 3)) + ? substr($content, 3) + : $content; + } + + /** + * Get id + * + * @return string + */ + public function getId() + { + return $this->_id; + } + + /** + * Verifies a single minification call can handle all sources + * + * @param array $sources Minify_Source instances + * + * @return bool true iff there no sources with specific minifier preferences. + */ + public static function haveNoMinifyPrefs($sources) + { + foreach ($sources as $source) { + if (null !== $source->minifier + || null !== $source->minifyOptions) { + return false; + } + } + return true; + } + + /** + * Get unique string for a set of sources + * + * @param array $sources Minify_Source instances + * + * @return string + */ + public static function getDigest($sources) + { + foreach ($sources as $source) { + $info[] = array( + $source->_id, $source->minifier, $source->minifyOptions + ); + } + return md5(serialize($info)); + } + + /** + * Get content type from a group of sources + * + * This is called if the user doesn't pass in a 'contentType' options + * + * @param array $sources Minify_Source instances + * + * @return string content type. e.g. 'text/css' + */ + public static function getContentType($sources) + { + foreach ($sources as $source) { + if ($source->contentType !== null) { + return $source->contentType; + } + } + return 'text/plain'; + } + + protected $_content = null; + protected $_getContentFunc = null; + protected $_id = null; +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Minify/YUICompressor.php b/plugins/Minify/extlib/minify/min/lib/Minify/YUICompressor.php new file mode 100644 index 0000000000..7cb61adbec --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Minify/YUICompressor.php @@ -0,0 +1,139 @@ + + * Minify_YUICompressor::$jarFile = '/path/to/yuicompressor-2.3.5.jar'; + * Minify_YUICompressor::$tempDir = '/tmp'; + * $code = Minify_YUICompressor::minifyJs( + * $code + * ,array('nomunge' => true, 'line-break' => 1000) + * ); + * + * + * @todo unit tests, $options docs + * + * @package Minify + * @author Stephen Clay + */ +class Minify_YUICompressor { + + /** + * Filepath of the YUI Compressor jar file. This must be set before + * calling minifyJs() or minifyCss(). + * + * @var string + */ + public static $jarFile = null; + + /** + * Writable temp directory. This must be set before calling minifyJs() + * or minifyCss(). + * + * @var string + */ + public static $tempDir = null; + + /** + * Filepath of "java" executable (may be needed if not in shell's PATH) + * + * @var string + */ + public static $javaExecutable = 'java'; + + /** + * Minify a Javascript string + * + * @param string $js + * + * @param array $options (verbose is ignored) + * + * @see http://www.julienlecomte.net/yuicompressor/README + * + * @return string + */ + public static function minifyJs($js, $options = array()) + { + return self::_minify('js', $js, $options); + } + + /** + * Minify a CSS string + * + * @param string $css + * + * @param array $options (verbose is ignored) + * + * @see http://www.julienlecomte.net/yuicompressor/README + * + * @return string + */ + public static function minifyCss($css, $options = array()) + { + return self::_minify('css', $css, $options); + } + + private static function _minify($type, $content, $options) + { + self::_prepare(); + if (! ($tmpFile = tempnam(self::$tempDir, 'yuic_'))) { + throw new Exception('Minify_YUICompressor : could not create temp file.'); + } + file_put_contents($tmpFile, $content); + exec(self::_getCmd($options, $type, $tmpFile), $output); + unlink($tmpFile); + return implode("\n", $output); + } + + private static function _getCmd($userOptions, $type, $tmpFile) + { + $o = array_merge( + array( + 'charset' => '' + ,'line-break' => 5000 + ,'type' => $type + ,'nomunge' => false + ,'preserve-semi' => false + ,'disable-optimizations' => false + ) + ,$userOptions + ); + $cmd = self::$javaExecutable . ' -jar ' . escapeshellarg(self::$jarFile) + . " --type {$type}" + . (preg_match('/^[a-zA-Z\\-]+$/', $o['charset']) + ? " --charset {$o['charset']}" + : '') + . (is_numeric($o['line-break']) && $o['line-break'] >= 0 + ? ' --line-break ' . (int)$o['line-break'] + : ''); + if ($type === 'js') { + foreach (array('nomunge', 'preserve-semi', 'disable-optimizations') as $opt) { + $cmd .= $o[$opt] + ? " --{$opt}" + : ''; + } + } + return $cmd . ' ' . escapeshellarg($tmpFile); + } + + private static function _prepare() + { + if (! is_file(self::$jarFile) + || ! is_dir(self::$tempDir) + || ! is_writable(self::$tempDir) + ) { + throw new Exception('Minify_YUICompressor : $jarFile and $tempDir must be set.'); + } + } +} + diff --git a/plugins/Minify/extlib/minify/min/lib/Solar/Dir.php b/plugins/Minify/extlib/minify/min/lib/Solar/Dir.php new file mode 100644 index 0000000000..37f7169624 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/lib/Solar/Dir.php @@ -0,0 +1,199 @@ + + * + * @license http://opensource.org/licenses/bsd-license.php BSD + * + * @version $Id: Dir.php 2926 2007-11-09 16:25:44Z pmjones $ + * + */ +class Solar_Dir { + + /** + * + * The OS-specific temporary directory location. + * + * @var string + * + */ + protected static $_tmp; + + /** + * + * Hack for [[php::is_dir() | ]] that checks the include_path. + * + * Use this to see if a directory exists anywhere in the include_path. + * + * {{code: php + * $dir = Solar_Dir::exists('path/to/dir') + * if ($dir) { + * $files = scandir($dir); + * } else { + * echo "Not found in the include-path."; + * } + * }} + * + * @param string $dir Check for this directory in the include_path. + * + * @return mixed If the directory exists in the include_path, returns the + * absolute path; if not, returns boolean false. + * + */ + public static function exists($dir) + { + // no file requested? + $dir = trim($dir); + if (! $dir) { + return false; + } + + // using an absolute path for the file? + // dual check for Unix '/' and Windows '\', + // or Windows drive letter and a ':'. + $abs = ($dir[0] == '/' || $dir[0] == '\\' || $dir[1] == ':'); + if ($abs && is_dir($dir)) { + return $dir; + } + + // using a relative path on the file + $path = explode(PATH_SEPARATOR, ini_get('include_path')); + foreach ($path as $base) { + // strip Unix '/' and Windows '\' + $target = rtrim($base, '\\/') . DIRECTORY_SEPARATOR . $dir; + if (is_dir($target)) { + return $target; + } + } + + // never found it + return false; + } + + /** + * + * "Fixes" a directory string for the operating system. + * + * Use slashes anywhere you need a directory separator. Then run the + * string through fixdir() and the slashes will be converted to the + * proper separator (for example '\' on Windows). + * + * Always adds a final trailing separator. + * + * @param string $dir The directory string to 'fix'. + * + * @return string The "fixed" directory string. + * + */ + public static function fix($dir) + { + $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir); + return rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + } + + /** + * + * Convenience method for dirname() and higher-level directories. + * + * @param string $file Get the dirname() of this file. + * + * @param int $up Move up in the directory structure this many + * times, default 0. + * + * @return string The dirname() of the file. + * + */ + public static function name($file, $up = 0) + { + $dir = dirname($file); + while ($up --) { + $dir = dirname($dir); + } + return $dir; + } + + /** + * + * Returns the OS-specific directory for temporary files. + * + * @param string $sub Add this subdirectory to the returned temporary + * directory name. + * + * @return string The temporary directory path. + * + */ + public static function tmp($sub = '') + { + // find the tmp dir if needed + if (! Solar_Dir::$_tmp) { + + // use the system if we can + if (function_exists('sys_get_temp_dir')) { + $tmp = sys_get_temp_dir(); + } else { + $tmp = Solar_Dir::_tmp(); + } + + // remove trailing separator and save + Solar_Dir::$_tmp = rtrim($tmp, DIRECTORY_SEPARATOR); + } + + // do we have a subdirectory request? + $sub = trim($sub); + if ($sub) { + // remove leading and trailing separators, and force exactly + // one trailing separator + $sub = trim($sub, DIRECTORY_SEPARATOR) + . DIRECTORY_SEPARATOR; + } + + return Solar_Dir::$_tmp . DIRECTORY_SEPARATOR . $sub; + } + + /** + * + * Returns the OS-specific temporary directory location. + * + * @return string The temp directory path. + * + */ + protected static function _tmp() + { + // non-Windows system? + if (strtolower(substr(PHP_OS, 0, 3)) != 'win') { + $tmp = empty($_ENV['TMPDIR']) ? getenv('TMPDIR') : $_ENV['TMPDIR']; + if ($tmp) { + return $tmp; + } else { + return '/tmp'; + } + } + + // Windows 'TEMP' + $tmp = empty($_ENV['TEMP']) ? getenv('TEMP') : $_ENV['TEMP']; + if ($tmp) { + return $tmp; + } + + // Windows 'TMP' + $tmp = empty($_ENV['TMP']) ? getenv('TMP') : $_ENV['TMP']; + if ($tmp) { + return $tmp; + } + + // Windows 'windir' + $tmp = empty($_ENV['windir']) ? getenv('windir') : $_ENV['windir']; + if ($tmp) { + return $tmp; + } + + // final fallback for Windows + return getenv('SystemRoot') . '\\temp'; + } +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min/utils.php b/plugins/Minify/extlib/minify/min/utils.php new file mode 100644 index 0000000000..c735941520 --- /dev/null +++ b/plugins/Minify/extlib/minify/min/utils.php @@ -0,0 +1,90 @@ + + * + * + * + * + * If you do not want ampersands as HTML entities, set Minify_Build::$ampersand = "&" + * before using this function. + * + * @param string $group a key from groupsConfig.php + * @param boolean $forceAmpersand (default false) Set to true if the RewriteRule + * directives in .htaccess are functional. This will remove the "?" from URIs, making them + * more cacheable by proxies. + * @return string + */ +function Minify_groupUri($group, $forceAmpersand = false) +{ + $path = $forceAmpersand + ? "/g={$group}" + : "/?g={$group}"; + return _Minify_getBuild($group)->uri( + '/' . basename(dirname(__FILE__)) . $path + ,$forceAmpersand + ); +} + + +/** + * Get the last modification time of the source js/css files used by Minify to + * build the page. + * + * If you're caching the output of Minify_groupUri(), you'll want to rebuild + * the cache if it's older than this timestamp. + * + * + * // simplistic HTML cache system + * $file = '/path/to/cache/file'; + * if (! file_exists($file) || filemtime($file) < Minify_groupsMtime(array('js', 'css'))) { + * // (re)build cache + * $page = buildPage(); // this calls Minify_groupUri() for js and css + * file_put_contents($file, $page); + * echo $page; + * exit(); + * } + * readfile($file); + * + * + * @param array $groups an array of keys from groupsConfig.php + * @return int Unix timestamp of the latest modification + */ +function Minify_groupsMtime($groups) +{ + $max = 0; + foreach ((array)$groups as $group) { + $max = max($max, _Minify_getBuild($group)->lastModified); + } + return $max; +} + +/** + * @param string $group a key from groupsConfig.php + * @return Minify_Build + * @private + */ +function _Minify_getBuild($group) +{ + static $builds = array(); + static $gc = false; + if (false === $gc) { + $gc = (require dirname(__FILE__) . '/groupsConfig.php'); + } + if (! isset($builds[$group])) { + $builds[$group] = new Minify_Build($gc[$group]); + } + return $builds[$group]; +} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php new file mode 100644 index 0000000000..9b66f24932 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php @@ -0,0 +1,44 @@ + $lastModified +)); +if ($cg->cacheIsValid) { + $cg->sendHeaders(); + // we're done + exit(); +} + +// generate content +$title = 'Last-Modified is known : add Content-Length'; +$explain = ' +

    Here, like the first example, we know the Last-Modified time, +but we also want to set the Content-Length to increase cacheability and allow +HTTP persistent connections. Instead of sending headers immediately, we first +generate our content, then use setContentLength(strlen($content)) +to add the header. Then finally call sendHeaders() and send the +content.

    +

    Note: This is not required if your PHP config buffers all +output and your script doesn\'t do any incremental flushing of the output +buffer. PHP will generally set Content-Length for you if it can.

    +

    This script emulates a document that changes every ' .$every. ' seconds. +
    This is version: ' . date('r', $lastModified) . '

    +'; + +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$cg->setContentLength(strlen($content)); +$cg->sendHeaders(); +send_slowly($content); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php new file mode 100644 index 0000000000..8f5482ba89 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php @@ -0,0 +1,40 @@ +When Last-Modified is unknown, you can still use ETags, but you need a short +string that is unique for that content. In the worst case, you have to generate +all the content first, then instantiate HTTP_ConditionalGet, setting +the array key contentHash to the output of a hash function of the +content. Since we have the full content, we might as well also use +setContentLength(strlen($content)) in the case where we need to +send it.

    +

    This script emulates a document that changes every ' .$every. ' seconds. +
    This is version: ' . date('r', $lastModified) . '

    +'; +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$cg = new HTTP_ConditionalGet(array( + 'contentHash' => substr(md5($content), 7) +)); +if ($cg->cacheIsValid) { + $cg->sendHeaders(); + // we're done + exit(); +} +$cg->setContentLength(strlen($content)); +$cg->sendHeaders(); + +send_slowly($content); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php new file mode 100644 index 0000000000..4b77d2084b --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php @@ -0,0 +1,49 @@ + $lastModified + ,'encoding' => $enc +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { + // we're done + exit(); +} + +// output encoded content + +$title = 'ConditionalGet + Encoder'; +$explain = ' +

    Using ConditionalGet and Encoder is straightforward. First impliment the +ConditionalGet, then if the cache is not valid, encode and send the content

    +

    This script emulates a document that changes every ' .$every. ' seconds. +
    This is version: ' . date('r', $lastModified) . '

    +'; +require '_include.php'; +$content = get_content(array( + 'title' => $title + ,'explain' => $explain +)); + +$he = new HTTP_Encoder(array( + 'content' => get_content(array( + 'title' => $title + ,'explain' => $explain + )) +)); +$he->encode(); + +// usually you would just $he->sendAll(), but here we want to emulate slow +// connection +$he->sendHeaders(); +send_slowly($he->getContent()); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php new file mode 100644 index 0000000000..b443c19734 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php @@ -0,0 +1,27 @@ + 20 + ,'lastModifiedTime' => filemtime(__FILE__) +)); +$cg->sendHeaders(); + +// generate, send content +$title = 'Last-Modified + Expires'; +$explain = ' +

    Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser +will consider this document fresh for 20 seconds, then revalidate its cache. After +the 304 response, the cache will be good for another 20 seconds. Unless you force +a reload, there will only be 304 responses for this page after the initial download. +'; + +require '_include.php'; +echo get_content(array( + 'title' => $title + ,'explain' => $explain +)); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php new file mode 100644 index 0000000000..9b65ae12e4 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php @@ -0,0 +1,64 @@ + + + + + +HTTP_ConditionalGet : <?php echo $data['title']; ?> + + +

    HTTP_ConditionalGet

    +

    + + +

    Notes

    +

    How to distinguish 200 and 304 responses

    +

    For these pages all 200 responses are sent in chunks a second apart, so you +should notice that 304 responses are quicker. You can also use HTTP sniffers +like Fiddler (win) and +LiveHTTPHeaders (Firefox add-on) +to verify headers and content being sent.

    +

    Browser notes

    +
    +
    Opera
    +
    Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5) + prevents the ETag/If-Modified-Since headers from being sent; it only sends + them when following a link or bookmark. Also, Opera will not honor the + must-revalidate Cache-Control value unless max-age + is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0 + (if one is not already set).
    +
    Safari
    +
    ETag validation is unsupported, but Safari supports HTTP/1.0 validation via + If-Modified-Since headers as long as the cache is explicitly marked + "public" or "private" ("private" is default in ConditionalGet).
    +
    + + + $lastModified +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { + // we're done + exit(); +} + +$title = 'Last-Modified is known : simple usage'; +$explain = ' +

    If your content has not changed since a certain timestamp, set this via the +the lastModifiedTime array key when instantiating HTTP_ConditionalGet. +You can immediately call the method sendHeaders() to set the +Last-Modified, ETag, and Cache-Control headers. The, if cacheIsValid +property is false, you echo the content.

    +

    This script emulates a document that changes every ' .$every. ' seconds. +
    This is version: ' . date('r', $lastModified) . '

    +'; + +require '_include.php'; + +echo send_slowly(get_content(array( + 'title' => $title + ,'explain' => $explain +))); + diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png new file mode 100644 index 0000000000000000000000000000000000000000..d9d3a308aec0e9c7be676a8bc5438e5c61427ff2 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_{3?x-PN__%S%*9TgAsieWw;%dH0CL#^d_r6q z{xkglf9682r8`iBv%n*=n1O-o0|+xZtudJa6cj6QjVN(0N=+=u%+FH@$;?efo0^iDsNj}alv + + + +HTTP_Encoder Test + + + +

    HTTP_Encoder test

    +

    HTML

    +

    CSS

    +

    Javascript

    +

    image

    + + + + $content + ,'type' => $type +)); +$he->encode(); +$he->sendAll(); + +?> \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_inc.php b/plugins/Minify/extlib/minify/min_unit_tests/_inc.php new file mode 100644 index 0000000000..bf416d4bb9 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_inc.php @@ -0,0 +1,50 @@ +0, 'fail'=>0, 'total'=>0); + + $mode = $test ? 'pass' : 'fail'; + $outMode = $test ? 'PASS' : '!FAIL'; + printf("%s: %s (%d of %d tests run so far have %sed)\n", + $outMode, $message, ++$count[$mode], ++$count['total'], $mode); + + return (bool)$test; +} + +ob_start(); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css new file mode 100644 index 0000000000..2ef9fac498 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css @@ -0,0 +1,9 @@ + +/* block comments get removed */ + +/*! YUI Compressor style comments are preserved */ + +/* but all other comments are removed */ + +/* comments that have any surrounding whitespace are replaced by a single space. */ +body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; } diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css new file mode 100644 index 0000000000..3ea5c61a69 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css @@ -0,0 +1,3 @@ + +/* YUI Compressor style comments are preserved */ +body{background:#fff url(/path/to/image.gif) repeat-y} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css new file mode 100644 index 0000000000..fccd32166f --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css @@ -0,0 +1,66 @@ +/* hide from ie5/mac \*/ a{} +.foo {color:red} +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/* feed to ie5/mac \*//*/ +@import "ie5mac.css"; +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/*/ hide from nav4 */ +.foo {display:block;} +/* necessary comment */ + +/* comment to attempt to confuse parser */ + +/*/ feed to nav *//*/ +.foo {display:crazy;} +/* necessary comment */ + +/* hide props from various IE/win */ +div { + width: 140px; + width/* */:/**/100px; + width: /**/100px; +} + +html>/**/body {} + +/* Tantek's box model hack */ +div { + width:400px; + voice-family: "\"}\""; + voice-family:inherit; + width:300px; +} + +/* don't minimize hex colors in filters */ +div { + filter:chroma(color=#aabbcc); + filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000); +} + +@media screen { + /* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/ + * html div#page { + height: 1%; + } + /**/ /* end hidden from IE 5 Mac */ +} + +foo { /* filters for IE */ + _height : 20px; + *height : 15px; +} + +/* http://tantek.com/CSS/Examples/midpass.html */ +@media tty { + i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";} +}/* */ + +/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */ +p:first-letter {color:red;} +p:first-line {color:red;} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css new file mode 100644 index 0000000000..68be2ee89e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css @@ -0,0 +1,4 @@ +/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media +screen{/*\*/* html +div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media +tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css new file mode 100644 index 0000000000..006c7a22fb --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css @@ -0,0 +1,890 @@ +/* +* DEFINITION DES STYLES DE TEXTE +*/ + /*-----------------------------------------------------------------------------------*/ +h1 { + color: #339933; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + font-weight: bold; + text-decoration: none; +} + +h2 { + color: #339933; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; +} + +h1,h2,h3,h4,h5 { + margin: 0px; + padding: 0px; +} + +.txt_10_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active { + color: black; +} + +.txt_10_noir:hover { + color: red; +} + +.txt_11_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active { + color: black; +} + +.txt_11_noir:hover { + color: red; +} + +.txt_12_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active { + color: black; +} + +.txt_12_noir:hover { + color: red; +} + +.txt_14_noir { + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active { + color: black; +} + +.txt_14_noir:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active { + color: grey; +} + +.txt_10_gris:hover { + color: red; +} + +.txt_11_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active { + color: grey; +} + +.txt_11_gris:hover { + color: red; +} + +.txt_12_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active { + color: grey; +} + +.txt_12_gris:hover { + color: red; +} + +.txt_14_gris { + color: grey; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active { + color: grey; +} + +.txt_14_gris:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active { + color: #FFFFFF; +} + +.txt_10_blanc:hover { + color: #FF8800; /*ORANGE*/ +} + +.txt_11_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active { + color: #FFFFFF; +} + +.txt_11_blanc:hover { + color: #FF8800; +} + +.txt_12_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active { + color: #FFFFFF; +} + +.txt_12_blanc:hover { + color: #FFAA00; +} + +.txt_14_blanc { + color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active { + color: #FFFFFF; +} + +.txt_14_blanc:hover { + color: #FF8800; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active { + color: #FF8800; +} + +.txt_10_orange:hover { + color: darkblue +} + +.txt_11_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active { + color: #FF8800; +} + +.txt_11_orange:hover { + color: darkblue; +} + +.txt_12_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active { + color: #FF8800; +} + +.txt_12_orange:hover { + color: darkblue; +} + +.txt_14_orange { + color: #FF8800; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active { + color: #FF8800; +} + +.txt_14_orange:hover { + color: darkblue; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active { + color: red; +} + +.txt_10_rouge:hover { + color: darkblue; +} + +.txt_11_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active { + color: red; +} + +.txt_11_rouge:hover { + color: darkblue; +} + +.txt_12_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active { + color: red; +} + +.txt_12_rouge:hover { + color: darkblue; +} + +.txt_14_rouge { + color: red; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active { + color: red; +} + +.txt_14_rouge:hover { + color: darkblue; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active { + color: blue; +} + +.txt_10_bleu:hover { + color: red; +} + +.txt_11_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active { + color: blue; +} + +.txt_11_bleu:hover { + color: red; +} + +.txt_12_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active { + color: blue; +} + +.txt_12_bleu:hover { + color: red; +} + +.txt_14_bleu { + color: blue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active { + color: blue; +} + +.txt_14_bleu:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active { + color: darkblue; +} + +.txt_10_bleu_f:hover { + color: red; +} + +.txt_11_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active { + color: darkblue; +} + +.txt_11_bleu_f:hover { + color: red; +} + +.txt_12_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active { + color: darkblue; +} + +.txt_12_bleu_f:hover { + color: red; +} + +.txt_14_bleu_f { + color: darkblue; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active { + color: darkblue; +} + +.txt_14_bleu_f:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active { + color: darkgreen; +} + +.txt_10_vert_f:hover { + color: red; +} + +.txt_11_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active { + color: darkgreen; +} + +.txt_11_vert_f:hover { + color: red; +} + +.txt_12_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active { + color: darkgreen; +} + +.txt_12_vert_f:hover { + color: red; +} + +.txt_14_vert_f { + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active { + color: darkgreen; +} + +.txt_14_vert_f:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.txt_10_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active { + color: green; +} + +.txt_10_vert:hover { + color: red; +} + +.txt_11_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active { + color: green; +} + +.txt_11_vert:hover { + color: red; +} + +.txt_12_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + text-decoration: none; +} + +.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active { + color: green; +} + +.txt_12_vert:hover { + color: red; +} + +.txt_14_vert { + color: green; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 14px; + text-decoration: none; +} + +.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active { + color: green; +} + +.txt_14_vert:hover { + color: red; +} + +/*-----------------------------------------------------------------------------------*/ +.fond_blanc { + background-color: #FFFFFF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_gris_c, .fond_gris_c tr { + background-color: #FFFFFF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.fond_gris_c2, .fond_gris_c2 tr { + background-color: #FBFBFB; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_bleu_c, .fond_bleu_c tr { + background-color: #D9EEF9; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; + background-image: url(../images/fond_1.bmp); +} + +.fond_bleu_c2 { + background-color: #ECF4FF; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_bleu_f { + background-color: #003366; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.fond_orange { + background-color: #FEEFE7; + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + background-image: url(../images/fond_3.jpg); +} + +.fond_orange_2 { + background-color: #FFF8F4; + color: darkgreen; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + border: 1px solid orange; + border-collapse: collapse; +} + +.vccDlgBody { + border: 3px solid #336699; + border-collapse: collapse; + color: black; + background-color: #EEFFEE; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +/* DEFINITION DES STYLES DE TABLEAUX */ +.bordure_0 { + border: 0px solid; + color: black; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.bordure_1_bleu { + border: 1px solid green; + border-collapse: collapse; + color: black; + background-color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.bordure_3_bleu { + border: 3px solid #336699; + border-collapse: collapse; + color: black; + background-color: #FFFFFF; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 11px; + text-decoration: none; +} + +.indent { + margin-left: 20px; +} + +/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */ +.Btn { + color: #003366; + text-align: center; + font-weight: bold; + background-color: #FFFFFF; + background-image: url(../images/ongletStyle1.jpg); + background-repeat: no-repeat; + background-position: center center; +} + +.Btn:hover { + color: red; +} + +.menu1h { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border-top: 1px solid #003366; + border-bottom: 1px solid #003366; + border-left: 1px solid #003366; + border-right: 1px solid white; + border-collapse: collapse; + display: block; +} + +.menu1h:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu1h_f { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border: 1px solid #003366; + display: block; +} + +.menu1h_f:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu1v { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + font-weight: bold; + text-decoration: none; + border: 1px solid #003366; + border-collapse: collapse; + display: block; +} + +.menu1v:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menu2v { + background-color: #5588BB; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 12px; + font-weight: bold; + text-decoration: none; + border: 1px solid #4277AB; + border-collapse: collapse; + float: left; + display: block; +} + +.menu2v:hover { + background-color: white; + color: red; + border: 1px solid darkgreen; + border-collapse: collapse; +} + +.menuEDF { + background-color: #003366; + color: white; + font-family: Verdana, Arial, Lucida, Tahoma; + font-size: 10px; + text-decoration: none; +} + +.menuEDF:hover { + color: #FF8800; +} + +/*bouton bleu sur blanc*/ +.Bouton { + color: #003366; + text-align: center; + font-weight: bold; + /* Ricardo cursor: hand; */ + cursor: pointer; + background-color: #FFFFFF; +} + +input { + border: 2px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.disabled_input { + border: 1px solid gray; + color: grey; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input0 { + border: 0px; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); +} + +.input2 { + border: 1px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input3 { + border: 1px solid black; + color: #003366; + background-color: #EEEEEE; + background-image: url(); +} + +.input4 { + border: 1px solid blue; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input5 { + border: 1px solid darkblue; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_4.bmp); + background-repeat: repeat-x; +} + +.input_btn { + border: 0px; + /* cursor: hand; */ + cursor: pointer; +} + +textarea { + border: 2px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(../images/fond_5.bmp); +} + +.TEXTAREA3 { + border: 1px solid green; + color: #003366; + background-color: #FFFFFF; + background-image: url(); +} + +.TEXTAREA4 { + border: 1px solid green; + color: #003366; + background-color: #EEEEEE; + background-image: url(); +} + +.hand { + cursor: hand; + cursor: pointer; +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css new file mode 100644 index 0000000000..5eb1982282 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css @@ -0,0 +1,25 @@ +h1{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;font-weight:bold;text-decoration:none}h2{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none}h1,h2,h3,h4,h5{margin:0px;padding:0px}.txt_10_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active{color:black}.txt_10_noir:hover{color:red}.txt_11_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active{color:black}.txt_11_noir:hover{color:red}.txt_12_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active{color:black}.txt_12_noir:hover{color:red}.txt_14_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active{color:black}.txt_14_noir:hover{color:red}.txt_10_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active{color:grey}.txt_10_gris:hover{color:red}.txt_11_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active{color:grey}.txt_11_gris:hover{color:red}.txt_12_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active{color:grey}.txt_12_gris:hover{color:red}.txt_14_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active{color:grey}.txt_14_gris:hover{color:red}.txt_10_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active{color:#FFF}.txt_10_blanc:hover{color:#F80}.txt_11_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active{color:#FFF}.txt_11_blanc:hover{color:#F80}.txt_12_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active{color:#FFF}.txt_12_blanc:hover{color:#FA0}.txt_14_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active{color:#FFF}.txt_14_blanc:hover{color:#F80}.txt_10_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active{color:#F80}.txt_10_orange:hover{color:darkblue}.txt_11_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active{color:#F80}.txt_11_orange:hover{color:darkblue}.txt_12_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active{color:#F80}.txt_12_orange:hover{color:darkblue}.txt_14_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active{color:#F80}.txt_14_orange:hover{color:darkblue}.txt_10_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active{color:red}.txt_10_rouge:hover{color:darkblue}.txt_11_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active{color:red}.txt_11_rouge:hover{color:darkblue}.txt_12_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active{color:red}.txt_12_rouge:hover{color:darkblue}.txt_14_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active{color:red}.txt_14_rouge:hover{color:darkblue}.txt_10_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active{color:blue}.txt_10_bleu:hover{color:red}.txt_11_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active{color:blue}.txt_11_bleu:hover{color:red}.txt_12_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active{color:blue}.txt_12_bleu:hover{color:red}.txt_14_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active{color:blue}.txt_14_bleu:hover{color:red}.txt_10_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active{color:darkblue}.txt_10_bleu_f:hover{color:red}.txt_11_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active{color:darkblue}.txt_11_bleu_f:hover{color:red}.txt_12_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active{color:darkblue}.txt_12_bleu_f:hover{color:red}.txt_14_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active{color:darkblue}.txt_14_bleu_f:hover{color:red}.txt_10_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active{color:darkgreen}.txt_10_vert_f:hover{color:red}.txt_11_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active{color:darkgreen}.txt_11_vert_f:hover{color:red}.txt_12_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active{color:darkgreen}.txt_12_vert_f:hover{color:red}.txt_14_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active{color:darkgreen}.txt_14_vert_f:hover{color:red}.txt_10_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active{color:green}.txt_10_vert:hover{color:red}.txt_11_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active{color:green}.txt_11_vert:hover{color:red}.txt_12_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active{color:green}.txt_12_vert:hover{color:red}.txt_14_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active{color:green}.txt_14_vert:hover{color:red}.fond_blanc{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_gris_c, .fond_gris_c +tr{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.fond_gris_c2, .fond_gris_c2 +tr{background-color:#FBFBFB;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_c, .fond_bleu_c +tr{background-color:#D9EEF9;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_1.bmp)}.fond_bleu_c2{background-color:#ECF4FF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_f{background-color:#036;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_orange{background-color:#FEEFE7;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;background-image:url(../images/fond_3.jpg)}.fond_orange_2{background-color:#FFF8F4;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px +solid orange;border-collapse:collapse}.vccDlgBody{border:3px +solid #369;border-collapse:collapse;color:black;background-color:#EFE;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_0{border:0px +solid;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_1_bleu{border:1px +solid green;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_3_bleu{border:3px +solid #369;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.indent{margin-left:20px}.Btn{color:#036;text-align:center;font-weight:bold;background-color:#FFF;background-image:url(../images/ongletStyle1.jpg);background-repeat:no-repeat;background-position:center center}.Btn:hover{color:red}.menu1h{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border-top:1px solid #036;border-bottom:1px solid #036;border-left:1px solid #036;border-right:1px solid white;border-collapse:collapse;display:block}.menu1h:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu1h_f{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px +solid #036;display:block}.menu1h_f:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu1v{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px +solid #036;border-collapse:collapse;display:block}.menu1v:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menu2v{background-color:#58B;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px +solid #4277AB;border-collapse:collapse;float:left;display:block}.menu2v:hover{background-color:white;color:red;border:1px +solid darkgreen;border-collapse:collapse}.menuEDF{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.menuEDF:hover{color:#F80}.Bouton{color:#036;text-align:center;font-weight:bold;cursor:pointer;background-color:#FFF}input{border:2px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.disabled_input{border:1px +solid gray;color:grey;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input0{border:0px;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp)}.input2{border:1px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input3{border:1px +solid black;color:#036;background-color:#EEE;background-image:url()}.input4{border:1px +solid blue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input5{border:1px +solid darkblue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input_btn{border:0px;cursor:pointer}textarea{border:2px +solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_5.bmp)}.TEXTAREA3{border:1px +solid green;color:#036;background-color:#FFF;background-image:url()}.TEXTAREA4{border:1px +solid green;color:#036;background-color:#EEE;background-image:url()}.hand{cursor:hand;cursor:pointer} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css new file mode 100644 index 0000000000..da7cfca20c --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css @@ -0,0 +1,12 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css new file mode 100644 index 0000000000..ffb94e2165 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css @@ -0,0 +1 @@ +@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css new file mode 100644 index 0000000000..aa41d0a91e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css @@ -0,0 +1,14 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '../bar/foo.css' print; +@import '../../foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css new file mode 100644 index 0000000000..34936155a0 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css @@ -0,0 +1 @@ +@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt new file mode 100644 index 0000000000..0181755296 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt @@ -0,0 +1 @@ +Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css new file mode 100644 index 0000000000..d74c9aa02a --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css @@ -0,0 +1,42 @@ +/* http://www.w3.org/TR/css3-selectors/ */ + +* +E[foo] +E[foo="bar"] +E[foo~="bar"] +E[foo^="bar"] +E[foo$="bar"] +E[foo*="bar"] +E[hreflang|="en"] +E:root +E:nth-child(n) +E:nth-last-child(n) +E:nth-of-type(n) +E:nth-last-of-type(n) +E:first-child +E:last-child +E:first-of-type +E:last-of-type +E:only-child +E:only-of-type +E:empty +E:link +E:visited +E:active +E:hover +E:focus +E:target +E:lang(fr) +E:enabled +E:disabled +E:checked +E::first-line +E::first-letter +E::selection +E::before +E::after +E.warning#myid +E:not(s) + > F + + F + ~ F {color: red;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css new file mode 100644 index 0000000000..643089fcf7 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css @@ -0,0 +1,37 @@ +* +E[foo] +E[foo="bar"] +E[foo~="bar"] +E[foo^="bar"] +E[foo$="bar"] +E[foo*="bar"] +E[hreflang|="en"] +E:root +E:nth-child(n) +E:nth-last-child(n) +E:nth-of-type(n) +E:nth-last-of-type(n) +E:first-child +E:last-child +E:first-of-type +E:last-of-type +E:only-child +E:only-of-type +E:empty +E:link +E:visited +E:active +E:hover +E:focus +E:target +E:lang(fr) +E:enabled +E:disabled +E:checked +E::first-line +E::first-letter +E::selection +E::before +E::after +E.warning#myid +E:not(s)>F+F~F{color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css new file mode 100644 index 0000000000..bf46c0af0e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css @@ -0,0 +1,31 @@ +/* some CSS to try to exercise things in general */ + +@import url( /more.css ); + + body, td, th { + font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; + + font-size : 12px; +} + +.nav { + margin-left: 20%; +} +#main-nav { + background-color: red; + border: 1px solid #00ff77; +} + +div#content +h1 + p { + padding-top: 0; + margin-top: 0; +} + +@media all and (min-width: 640px) { + #media-queries-1 { background-color: #0f0; } +} + +@media screen and (max-width: 2000px) { + #media-queries-2 { background-color: #0f0; } +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css new file mode 100644 index 0000000000..a823b0550f --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css @@ -0,0 +1,3 @@ +@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px +solid #0f7}div#content +h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css new file mode 100644 index 0000000000..79d34ec4a8 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css @@ -0,0 +1,434 @@ +/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+ +Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */ +/* The content of the posts (body of text) */ +/* General page style */ + + + + /* begin suggest post */ + .float-l{ + float: left; + } + + .form-suggest{ + height:200px; + background:#DEE2D0; + vertical-align: top; + } + + .form-input input{ + font-size: 10px; + } + + .hide{ + display:none; + } + + .form-input textarea{ + font-size: 11px; + width: 350px; + } + + .form-label{ + font-size: 10px; + font-weight: bold; + line-height: 25px; + padding-right: 10px; + text-align: right; + width: 100px; + color: #39738F; + } + + .font-9{ + font-size: 9px; + } + + .form-topic{ + font-weight:bold; + + } + + .form-error{ + color:red; + } + + .inline{ + display: inline; + } + + .space-10{ + clear: both; + font-size: 10px; + height: 10px; + line-height: 10px; + } + + .suggest-success{ + color:green; + padding-left:10px; + font-size:11px; + font-weight:bold; + } + + .top{ + vertical-align: top; + } + /* end suggest post */ + +table td{ + padding:3px; +} + +a:link,a:active,a:visited,a.postlink{ + color: #006699; + text-decoration: none; +} + +a:hover{ + color: #DD6900; +} + +a.admin:hover,a.mod:hover{ + color: #DD6900; +} + +a.but,a.but:hover,a.but:visited{ + color: #000000; + text-decoration: none; +} + +a.topictitle:visited{ + color: #5493B4; +} + +a.topictitle:hover{ + color: #DD6900; +} + + + +body{ + color: #000000; + font: 11px Verdana,Arial,Helvetica,sans-serif; + margin: 0 10px 10px 10px; + padding: 0; + overflow:auto; +} + +/* General font families for common tags */ +font,th,td,p{ + font: 12px Verdana,Arial,Helvetica,sans-serif; +} + +/* Form elements */ +form{ + display: inline; +} + +hr{ + border: 0px solid #FFFFFF; + border-top-width: 1px; + height: 0px; +} + +/* Gets rid of the need for border="0" on hyperlinked images */ +img{ + border: 0 solid; +} + +input{ + font: 11px Verdana,Arial,Helvetica,sans-serif; +} + +input.button,input.liteoption,.fakebut{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 11px; +} + +input.catbutton{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 10px; +} + +input.mainoption{ + background: #FAFAFA; + border: 1px solid #000000; + font-size: 11px; + font-weight: bold; +} + +input.post,textarea.post{ + background: #FFFFFF; + border: 1px solid #000000; + font: 11px Verdana,Arial,Helvetica,sans-serif; + padding-bottom: 2px; + padding-left: 2px; +} + +select{ + background: #FFFFFF; + font: 11px Verdana,Arial,Helvetica,sans-serif; +} + +table{ + text-align: left; +} + +td{ + vertical-align: middle; +} + +/* Category gradients*/ +td.cat{ + background-color: #C2C6BA; + font-weight: bold; + height: 20px; + letter-spacing: 1px; + text-indent: 4px; +} + +td.genmed,.genmed{ + font-size: 11px; +} + +/* This is for the table cell above the Topics,Post & Last posts on the index.php */ +td.rowpic{ + background: #C2C6BA; +} + +td.spacerow{ + background: #E5E6E2; +} + +/* Table Header cells */ +th{ + background-color: #FADD31; + background-image: url(images/cellpic3.gif); + background-repeat: repeat-x; + color: #68685E; + font-size: 11px; + font-weight: bold; + line-height:16px; + height: 16px; + padding-left: 8px; + padding-right: 8px; + text-align: center; + white-space: nowrap; +} + +/* Admin & Moderator Colours MODification */ +.admin,.mod{ + font-size: 11px; + font-weight: bold; +} + +.admin,a.admin,a.admin:visited{ + color: #FFA34F; +} + +/* This is the border line & background colour round the entire page */ +.bodyline{ + background: #FFFFFF; + border: 1px solid #98AAB1; +} + +.center{ + text-align: center; +} + +/* Code blocks */ +.code{ + background: #FAFAFA; + border: 1px solid #D1D7DC; + color: #006600; + font: 12px Courier,"Courier New",sans-serif; + padding: 5px; +} + +/* This is for the error messages that pop up */ +.errorline{ + background: #E5E6E2; + border: 1px solid #8F8B8B; + color:#D92A2A; +} + +.explaintitle{ + color: #5C81B1; + font-size: 11px; + font-weight: bold; +} + +/* This is the outline round the main forum tables */ +.forumline{ + background: #FFFFFF; +} + +/* General text */ +.gensmall{ + font-size: 10px; +} + +.h1-font{ + color: #006699; + display: inline; + font: bold 13px Verdana, Arial, Helvetica, sans-serif; + margin: 0; + text-decoration: none; +} + +.h2-font{ + display: inline; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +.height1{ + height: 1px; +} + +.height22{ + height: 22px; +} + +.height25{ + height: 25px; +} + +.height28{ + height: 28px; +} + +.height30{ + height: 30px; +} + +.height40{ + height: 40px; +} + +/* This is the line in the posting page which shows the rollover +help line. Colour value in row2 */ +.helpline{ + border: 0 solid; + font-size: 10px; +} + +.imgfolder{ + margin: 1px 4px 1px 4px; +} + +.imgspace{ + margin-left: 1px; + margin-right: 2px; +} + +/* Specify the space around images */ +.imgtopic,.imgicon{ + margin-left: 3px; +} + +.left{ + text-align: left; +} + +/* The largest text used in the index page title and toptic title etc. */ +.maintitle,h1,h2{ + color: #5C81B1; + font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; + text-decoration: none; +} + +.maxwidth{ + width: 100%; +} + +.mod,a.mod,a.mod:visited{ + color: #006600; +} + +/* Name of poster in viewmsg.php and viewtopic.php and other places */ +.name{ + font-size: 11px; + font-weight: bold; +} + +/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */ +.nav{ + font-size: 11px; + font-weight: bold; +} + +.nowrap{ + white-space: nowrap; +} + +.postbody{ + font-size: 12px; + line-height: 125%; +} + +.postbody a{ + text-decoration: underline; +} + +/* Location,number of posts,post date etc */ +.postdetails{ + color: #00396A; + font-size: 10px; +} + +/* Quote blocks */ +.quote{ + background: #F3F3EF; + border: 1px solid #C2C6BA; + color: #006699; + font-size: 11px; + line-height: 125%; +} + +.right{ + text-align: right; +} + +/* Main table cell colours and backgrounds */ +.row1{ + background: #F0F0EB; +} + +.row2,.helpline{ + background: #E5E6E2; +} + +.row3{ + background: #DBDBD4; +} + +.subtitle,h2{ + font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; + text-decoration: none; +} + +/* titles for the topics:could specify viewed link colour too */ +.topictitle { + color: #000000; + font-size: 11px; + font-weight: bold; +} + +.underline{ + text-decoration: underline; +} + +.top{ +vertical-align:top; +} + +.image-hspace{ +margin-right:3px; +} + +.clear{ +clear:both; +} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css new file mode 100644 index 0000000000..f59b15a92e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css @@ -0,0 +1,18 @@ +.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input +input{font-size:10px}.hide{display:none}.form-input +textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table +td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0 +10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px +solid #FFF;border-top-width:1px;height:0px}img{border:0 +solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px +solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px +solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px +solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px +solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px +solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px +solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px +solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0 +solid;font-size:10px}.imgfolder{margin:1px +4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody +a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px +solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css new file mode 100644 index 0000000000..69fa756eb9 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css @@ -0,0 +1,10 @@ +/* test unusual, but valid strings in CSS */ + +foo[attr="multiple spaces"] { + content: "Hello World!"; +} + +foo[attr="Hel\ +lo"] { + content: " \"World\""; +} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css new file mode 100644 index 0000000000..4b7d97e455 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css @@ -0,0 +1,2 @@ +foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\ +lo"]{content:" \"World\""} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css new file mode 100644 index 0000000000..819835e582 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css @@ -0,0 +1,658 @@ +/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */ + + #comments_inviter #close_me { + clear: both; + text-align: center; + border-top: 1px solid #eeeeee; + padding-top: 10px; + } + + #comments_inviter #close_me span { + color: #108eed; + cursor: pointer; + font-weight: bold; + } + + #comments_inviter img { + float: left; + margin-right: 3px; + margin-bottom: 10px; + } + + #comments_inviter { + width: 200px; + background-color: #FFFFFF; + border: 4px solid #eeeeee; + font-size: 10px; + font-family: verdana; + padding: 10px; + color: #333333; + } + + .one_com { + background-color: #FAFAFA; + padding: 10px; + margin-bottom: 20px; + border: 1px solid #EEEEEE; + } + + .one_com .com_says, .one_com .com_det { + text-transform: lowercase; + color: #333333; + padding: 0px; + font-family: verdana; + margin: 0px; + font-size: 13px; + font-weight: bold; + } + + .flvPlayer { + text-align: center; + border: 5px solid #dddddd; + width: 320px; + } + + .one_com .com_det { + font-size: 10px; + font-weight: normal; + margin-bottom: 20px; + padding-bottom: 10px; + border-bottom: 8px solid #eeeeee; + } + + .one_com .com_det a { + text-decoration: none; + } + + .one_com .com_txt { + background-color: #ffffff; + margin-bottom: 10px; + border-bottom: 2px solid #eeeeee + } + + .one_com .com_txt p { + font-family: verdana; + font-size: 13px; + color: #777777; + margin: 0px; + padding: 5px; + padding-bottom: 10px; + text-transform: lowercase; + } + + .one_com .com_says a { + color: #333333; + } + + .one_com .com_det a { + color: #333333; + } + + .post_box .related_posts { + + } + + .post_box .related_posts p { + padding: 0px; + margin: 0px; + padding-bottom: 20px; + padding-left: 35px; + font-family: verdana; + + } + + .post_box .related_posts a { + color: #108eed; + } + + .post_nav_2 p { + + text-align: center; + color: #cccccc; + font-family: verdana; + } + + .post_box .related_posts h3, #comments_box #respond, .comments_posted h3 { + padding: 0px; + margin: 0px; + font-size: 18px; + color: #FF8000; + padding-top: 30px; + margin-bottom: 20px; + width: 300px; + border-bottom: 5px solid #e0e0e0; + } + + .comments_posted { + + margin-bottom: 50px; + + } + + .comments_posted h3 { + padding: 0px; + margin: 0px; + margin-bottom: 20px; + + } + + .cmt_txtarea { + width: 300px; + height: 100px; + + } + + #comments_box #respond { + + padding-top: 0px; + margin-bottom: 0px; + + } + + .pagetitle { + color: #65DA33; + text-align: center; + } + + #searchform { + padding: 0px; + margin: 0px; + } + + .si { + background-color: #FFFFEE; + border: 1px solid #e0e0e0; + } + + #rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags { + margin-top: 30px; + padding-bottom: 10px; + } + + #post_nav p { + padding: 0px; + margin: 0px; + padding-bottom: 5px; + } + + #post_nav { + text-align: left; + padding-bottom: 15px; + } + + #post_nav a, .post_nav_2 p a { + text-decoration: none; + font-family: Verdana; + font-size: 12px; + color: #108eed; + } + + #post_nav a:hover, .post_nav_2 p a:hover { + text-decoration: underline; + color: #FF8000; + } + + #rightcol #about { + padding-bottom: 10px; + } + + #rightcol #r_news input { + color: #333333; + font-size: 12px; + } + + #header { + height: 200px; + width: 100%; + background-image: url('images/header_bg.jpg'); + background-repeat: x-repeat; + } + + #header img { + + float: right; + margin-right: -3px; + z-index: 100; + + } + + .tags { + text-transform: lowercase; + color: #333333; + font-family: arial; + font-size: 12px; + border-top: 2px dotted #EEEEEE; + width: 300px; + padding-top: 20px; + padding-bottom: 0px; + margin-top: 0px; + padding-left: 20px; + padding-right: 20px; + } + + .tags a { + color: #108eed; + } + + .tags p { + text-align: left; + margin: 0px; + padding: 0px; + } + + blockquote strong { + font-family: verdana; + display: block; + margin-top: 10px; + color: #FF0000; + font-style: italic; + text-align: right; + } + + blockquote { + margin: 0px; + background-color: #eeeeee; + border: 2px solid #dddddd; + padding: 24px; + padding-top: 10px; + padding-left: 60px; + padding-bottom: 10px; + font-size: 13px; + color: #333333; + margin-bottom: 30px; + margin-top: 10px; + } + + + html>body #header img { margin-right: 0px; } + + #subscribe h3 { + color: #ff0000; + margin-top: 30px; + padding: 20px; + } + + .post_actions a{ + color: #108eed; + } + + .post_actions { + border-top: 4px solid #DDDDDD; + border-bottom: 1px solid #EEEEEE; + text-align: center; + background-color: #FFFFDd; + color: #dddddd; + white-space: no-wrap; + padding-left: 20px; + padding-bottom: 5px; + text-transform: capitalize; + } + + #subscribe td { + color: #333333; + font-size: 12px; + text-transform: lowercase; + } + + #subscribe input { + font-size: 13px; + color: #333333; + } + + .post_content { + font-size: 13px; + margin-top: 10px; + padding-bottom: 10px; + text-align: justify; + font-family: verdana; + } + + .post_content p { + margin: 0px; + padding: 0px; + padding-bottom: 20px; + line-height: 20px; + } + + #header h1 { + z-index: 200; + margin: 0px; + position: absolute; + float: left; + text-transform: lowercase; + padding: 0px; + font-size: 45px; + margin-top: 70px; + margin-left: 40px; + + } + + #header h1 a { + white-space: no-wrap; + text-decoration: none; + color: #FAFAFA; + display: block + } + + #header h1 a:hover { + color: #FAFAFA; + border-bottom: 3px dotted #FAFAFA; + } + + html>body #header h1 { margin-left: 60px; } + + body { + margin: 0px; + padding: 0px; + height: 100%; + width: 100%; + font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial; + font-size: 12px; + } + + #leftcol { + float: left; + width: 200px; + margin-left: 0px; + margin-top: 17px; + color: #000; + padding: 3px; + height: 100%; + } + + #leftcol .box_head h3 { + text-transform: uppercase; + padding: 0px; + margin: 0px; + font-family: georgia; + font-size: 18px; + color: #dddddd; + border-top: 4px solid #dddddd; + border-bottom: 4px solid #cccccc; + padding-left: 10px; + padding-top: 10px; + padding-bottom: 10px; + background-image: url('images/stripesbg.png'); + margin-bottom: 10px; + } + + #leftcol .box_head input { + text-transform: lowercase; + color: #333333; + } + + #leftcol .box_head { + margin-left: 7px; + background-color: #ffefd4; + border-bottom: 2px solid #eeeeee; + padding-bottom: 20px; + margin-bottom: 30px; + } + + #leftcol .box_head p a { + color: #0a2d4d; + display: block; + text-decoration: none; + border-bottom: 3px solid #fefefe; + padding-top: 20px; + text-transform: lowercase; + padding-bottom: 20px; + padding-left: 5px; + padding-right: 5px; + } + + #leftcol .box_head p a:hover { + background-color: #fafafa; + border-bottom: 3px solid #eeeeee; + color: #000000; + } + + #leftcol .box_head p { + text-align: left; + margin: 0px; + width: 170px; + padding-bottom: 0px; + padding-top: 0px; + font-size: 11px; + } + + #rightcol { + position: absolute; + left: 77%; + top: 278px; + border: 3px solid #eeeeee; + width: 200px; + z-index: 3; + color: #333333; + padding: 10px; + text-transform: lowercase; + + } + + #rightcol p { + padding: 0px; + marging: 0px; + text-align: justify; + } + + #rightcol #about img, #rightcol #linksbro img { + border: 5px solid #eeeeee; + } + + #rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 { + background-color: #fafafa; + border: 1px dotted #e0e0e0; + font-size: 14px; + color: #104bbc; + padding: 5px; + padding-top: 10px; + font-family: Arial; + padding-bottom: 10px; + } + + #rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a { + color: #108eed; + } + + #rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p { + font-size: 12px; + text-align: left; + } + + #content_warp { + margin: 20px 25% 0 215px; + padding: 3px; + color: #000; + background-color: #ededed; + } + + #content { + margin: 5px; + background-color: #FFFFFF; + padding: 10px; + } + + + #footer { + width: 99%; + margin-top: 30px; + height: 98px; + background-color: #101b1d; + } + + #footer td a { + color: #FF8000; + } + + #footer td a img { + border: 2px solid #108eed; + } + + #footer td p { + font-family: Verdana; + font-size: 10px; + color: #c0c0c0; + padding: 0px; + margin: 0px; + text-align: center; + padding-bottom: 10px; + } + + .s_offer { + color: #65DA33; + font-size: 20px; + font-weight: bold; + font-style: normal; + } + + .post_box { + text-transform: lowercase; + margin-bottom: 40px; + } + + #newsletter_box { + text-transform: lowercase; + margin-bottom: 10px; + margin-top: 30px; + font-style: normal; + background-color: #ffffff; + border: 5px solid #dddddd; + } + + #newsletter_head { + color: #EEEEEE; + font-family: Georgia; + background-image: url('images/stripesbg.png'); + padding: 10px; + padding-left: 30px; + border-bottom: 5px solid #dddddd; + } + + #newsletter_body { + color: #333333; + font-family: Verdana; + text-align: justify; + background-color: #FFFFFF; + padding: 10px; + font-size: 13px; + } + + .s_offer { + color: #65DA33; + font-size: 26px; + font-weight: bold; + font-style: normal; + } + + .post_title a { + color: #EEEEEE; + text-decoration: none; + } + + .post_title a:hover { + color: #c0c0c0; + } + + .post_title { + background-image: url('images/stripe_post.png'); + text-transform: uppercase; + font-size: 18px; + font-family: georgia; + padding: 10px; + border-top: 4px solid #c0c0c0; + margin: 0px; + border-bottom: 2px solid #ffffdd; + } + + .post_det { + text-transform: none; + margin: 0px; + border-top: 1px solid #f0f0f0; + padding: 0px; + padding-top: 5px; + color: #999999; + font-size: 10px; + font-family: verdana; + margin-bottom: 20px; + background-color: #eeeeee; + padding-bottom: 5px; + padding-left: 10px; + text-align: left; + border-bottom: 2px solid #dddddd; + } + + .post_det a { + color: #999999; + text-decoration: none; + } + + + .subtle { + text-transform: lowercase; + font-size: 10px; + font-family: verdana; + color: #108eed; + text-align: justify; + } + + #top_menu #navlist, #top_menu #navlist li { + padding:0px; + margin: 0px; + padding-top: 14px; + text-transform: lowercase; + padding-bottom: 17px; + padding-left: 30px; + border-left: 1px solid #65cdef; + } + + #top_menu #navlist, #top_menu #navlist li #first { + + border-left: 0px; + + } + + #top_menu #navlist { + padding-left: 30px; + background-color: #1dabd9; + border-top: 5px solid #0e96c3; + border-bottom: 5px solid #0e96c3; + } + + #top_menu #navlist li { + color: #444444; + font-size: 10px; + display: inline; + list-style-type: none; + padding-right: 30px; + } + + #top_menu #navlist li a { + text-decoration: none; + font-family: Verdana; + color: #fafafa; + font-size: 12px; + font-weight: bold; + } + + #top_menu #navlist li a:hover { + color: #333333; + } + + .post_content a { + color: #108eed; + } + + ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; } + ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;} + ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; } + ul#tagcloud li a:hover { text-decoration:underline; } + ul#tagcloud li.t1 a { color:#797979; font-size: 120%; } + ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; } + ul#tagcloud li.t3 a { color:#616161; font-size: 190%; } + ul#tagcloud li.t4 a { color:#555555; font-size: 210%; } + ul#tagcloud li.t5 a { color:#484848; font-size: 230%; } + ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; } + ul#tagcloud li.t7 a { color:#303030; font-size: 270%; } + ul#tagcloud li.t8 a { color:#242424; font-size: 290%; } + ul#tagcloud li.t9 a { color:#181818; font-size: 310%; } + ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css new file mode 100644 index 0000000000..eaffaee38a --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css @@ -0,0 +1,79 @@ +#comments_inviter +#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me +span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter +img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px +solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px +solid #EEE}.one_com .com_says, .one_com +.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px +solid #ddd;width:320px}.one_com +.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det +a{text-decoration:none}.one_com +.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt +p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says +a{color:#333}.one_com .com_det +a{color:#333}.post_box +.related_posts{}.post_box .related_posts +p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts +a{color:#108eed}.post_nav_2 +p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted +h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted +h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box +#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px +solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol +#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav +p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p +a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol +#about{padding-bottom:10px}#rightcol #r_news +input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header +img{float:right;margin-right: -3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags +a{color:#108eed}.tags +p{text-align:left;margin:0px;padding:0px}blockquote +strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px +solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header +img{margin-right:0px}#subscribe +h3{color:#f00;margin-top:30px;padding:20px}.post_actions +a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe +td{color:#333;font-size:12px;text-transform:lowercase}#subscribe +input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content +p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header +h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1 +a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header +h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head +h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head +input{text-transform:lowercase;color:#333}#leftcol +.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p +a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head +p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px +solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol +p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro +img{border:5px +solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags +h3{background-color:#fafafa;border:1px +dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p +a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro +p{font-size:12px;text-align:left}#content_warp{margin:20px +25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td +a{color:#FF8000}#footer td a +img{border:2px +solid #108eed}#footer td +p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px +solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title +a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det +a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist +li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li +#first{border-left:0px}#top_menu +#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist +li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li +a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content +a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud +li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1 +a{color:#797979;font-size:120%}ul#tagcloud li.t2 +a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3 +a{color:#616161;font-size:190%}ul#tagcloud li.t4 +a{color:#555;font-size:210%}ul#tagcloud li.t5 +a{color:#484848;font-size:230%}ul#tagcloud li.t6 +a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7 +a{color:#303030;font-size:270%}ul#tagcloud li.t8 +a{color:#242424;font-size:290%}ul#tagcloud li.t9 +a{color:#181818;font-size:310%}ul#tagcloud li.t10 +a{color:#0c0c0c;font-size:330%} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css new file mode 100644 index 0000000000..d749295b77 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css @@ -0,0 +1,14 @@ +@import "/_test_files/css_uriRewriter/foo.css"; +@import '/_test_files/css_uriRewriter/bar/foo.css' print; +@import '/_test_files/bar/foo.css' print; +@import '/foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(/_test_files/foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css new file mode 100644 index 0000000000..aa41d0a91e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css @@ -0,0 +1,14 @@ +@import "foo.css"; +@import 'bar/foo.css' print; +@import '../bar/foo.css' print; +@import '../../foo.css' print; +@import '/css/foo.css'; /* abs, should not alter */ +@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ +@import url(../foo.css) tv, projection; +@import url("/css/foo.css"); /* abs, should not alter */ +@import url(/css2/foo.css); /* abs, should not alter */ +@import url(data:image/gif;base64,AAAA); /* data, should not alter */ +foo {background:url('bar/foo.png')} +foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ +foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ +foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html new file mode 100644 index 0000000000..c22cc8f20d --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html @@ -0,0 +1,96 @@ + + + + + + + + + + + css Zen Garden: The Beauty in CSS Design + + + + + + + + + + + + +

    Browser != IE

    +
    + +
    +	White  space  is  important   here!
    +		
    +
    +

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    +

    Download the sample html file and css file

    +
    + +
    + + \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html new file mode 100644 index 0000000000..58ba2bb988 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html @@ -0,0 +1,36 @@ +css Zen Garden: The Beauty in CSS Design

    Browser != IE

    css Zen Garden

    The Beauty of CSS Design

    +	White  space  is  important   here!
    +		

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    Download the sample html file and css file

    \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html new file mode 100644 index 0000000000..4ca7f199e1 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html @@ -0,0 +1,95 @@ + + + + + + + + + + + css Zen Garden: The Beauty in CSS Design + + + + + + + + + + + + +

    Browser != IE

    +
    + +
    +	White  space  is  important   here!
    +		
    +
    +

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    +

    Download the sample html file and css file

    +
    + +Preserve at least 1 char of whitespace near scripts in case of document.write(). +
    + + \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html new file mode 100644 index 0000000000..ae28465bcd --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html @@ -0,0 +1,36 @@ +css Zen Garden: The Beauty in CSS Design

    Browser != IE

    css Zen Garden

    The Beauty of CSS Design

    +	White  space  is  important   here!
    +		

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    Download the sample html file and css file

    Preserve at least 1 char of whitespace near scripts in case of document.write().
    \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css new file mode 100644 index 0000000000..da52c69491 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css @@ -0,0 +1,3 @@ +/* @import url('bad.css' ) bad; */ +adjacent2 foo { background: red url(/red.gif); } +adjacent2 bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css new file mode 100644 index 0000000000..69fa2f5ef3 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css @@ -0,0 +1,4 @@ +@import url( adjacent.css ) all; +@import '../input.css'; +tv foo { background: red url(/red.gif); } +tv bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css new file mode 100644 index 0000000000..b452f473e7 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css @@ -0,0 +1,4 @@ +@import url(../css/styles.css); +@import url(http://example.com/hello.css); +adjacent foo { background: red url(/red.gif); } +adjacent bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css new file mode 100644 index 0000000000..bb7b959511 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css @@ -0,0 +1,4 @@ +@import url( adjacent.css ) screen; +@import "1/tv.css" tv, projection; +input foo { background: red url(/red.gif); } +input bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css new file mode 100644 index 0000000000..1e4358c25d --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css @@ -0,0 +1,48 @@ +@media screen { +/* some CSS to try to exercise things in general */ + +@import url(/more.css); + + body, td, th { + font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; + + font-size : 12px; +} + +.nav { + margin-left: 20%; +} +#main-nav { + background-color: red; + border: 1px solid #00ff77; +} + +div#content +h1 + p { + padding-top: 0; + margin-top: 0; +} + +@media all and (min-width: 640px) { + #media-queries-1 { background-color: #0f0; } +} + +@media screen and (max-width: 2000px) { + #media-queries-2 { background-color: #0f0; } +} +@import url(http://example.com/hello.css); +adjacent foo { background: red url(/red.gif); } +adjacent bar { background: url('%TEST_FILES_URI%/green.gif') } +} + +@media tv,projection { +/* @import url('%TEST_FILES_URI%/importProcessor/1/bad.css') bad; */ +adjacent2 foo { background: red url(/red.gif); } +adjacent2 bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } +@import '../input.css'; +tv foo { background: red url(/red.gif); } +tv bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } +} + +input foo { background: red url(/red.gif); } +input bar { background: url('%TEST_FILES_URI%/green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js new file mode 100644 index 0000000000..cccdb9706e --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js @@ -0,0 +1,57 @@ +/*! is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ + +// is + +// The -is- object is used to identify the browser. Every browser edition +// identifies itself, but there is no standard way of doing it, and some of +// the identification is deceptive. This is because the authors of web +// browsers are liars. For example, Microsoft's IE browsers claim to be +// Mozilla 4. Netscape 6 claims to be version 5. + +var is = { + ie: navigator.appName == 'Microsoft Internet Explorer', + java: navigator.javaEnabled(), + ns: navigator.appName == 'Netscape', + ua: navigator.userAgent.toLowerCase(), + version: parseFloat(navigator.appVersion.substr(21)) || + parseFloat(navigator.appVersion), + win: navigator.platform == 'Win32' +} +/*!* + * preserve this comment, too + */ +is.mac = is.ua.indexOf('mac') >= 0; +if (is.ua.indexOf('opera') >= 0) { + is.ie = is.ns = false; + is.opera = true; +} +if (is.ua.indexOf('gecko') >= 0) { + is.ie = is.ns = false; + is.gecko = true; +} + +/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
    "); + @else @*/ + if (is.ie && is.win) + document.write("FAIL: IE/win did not honor multi-line conditional comment.
    "); + else + document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    "); + /*@end +@*/ + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ + +if ((is.ie && is.win) == recognizesCondComm) + document.write("PASS: IE/win honored single-line conditional comment.
    "); +else + document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js new file mode 100644 index 0000000000..6f06c6e6ce --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js @@ -0,0 +1,22 @@ +/* is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ +var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} +/** + * preserve this comment, too + */ +is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} +if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
    "); + @else @*/if(is.ie&&is.win) +document.write("FAIL: IE/win did not honor multi-line conditional comment.
    ");else +document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    ");/*@end +@*/var recognizesCondComm=true;//@cc_on/* +recognizesCondComm=false;//@cc_on*/ +if((is.ie&&is.win)==recognizesCondComm) +document.write("PASS: IE/win honored single-line conditional comment.
    ");else +document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js new file mode 100644 index 0000000000..6f06c6e6ce --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js @@ -0,0 +1,22 @@ +/* is.js + + (c) 2001 Douglas Crockford + 2001 June 3 +*/ +var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} +/** + * preserve this comment, too + */ +is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} +if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on + /*@if (@_win32) + if (is.ie && is.win) + document.write("PASS: IE/win honored conditional comment.
    "); + @else @*/if(is.ie&&is.win) +document.write("FAIL: IE/win did not honor multi-line conditional comment.
    ");else +document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    ");/*@end +@*/var recognizesCondComm=true;//@cc_on/* +recognizesCondComm=false;//@cc_on*/ +if((is.ie&&is.win)==recognizesCondComm) +document.write("PASS: IE/win honored single-line conditional comment.
    ");else +document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js new file mode 100644 index 0000000000..28aa1268be --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js @@ -0,0 +1,14 @@ +var isWin; +/*@cc_on + @if (@_win32) + isWin = true; + @else @*/ isWin = false; + /*@end +@*/ + +isWin = /*@cc_on!*/!1; + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js new file mode 100644 index 0000000000..d8c1ed3861 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js @@ -0,0 +1,13 @@ +var isWin; +/*@cc_on + @if (@_win32) + isWin = true; + @else @*/ + isWin = false; + /*@end +@*/ + +var recognizesCondComm = true; +//@cc_on/* +recognizesCondComm = false; +//@cc_on*/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js new file mode 100644 index 0000000000..e12eaeb487 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js @@ -0,0 +1,4 @@ + +function testIssue74() { + return /'/; +} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js new file mode 100644 index 0000000000..3442a73fcd --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js @@ -0,0 +1 @@ +function testIssue74(){return /'/;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js new file mode 100644 index 0000000000..9caaa899c9 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js @@ -0,0 +1 @@ +function testIssue74(){return /'/} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js new file mode 100644 index 0000000000..c5a3337600 --- /dev/null +++ b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js @@ -0,0 +1,3408 @@ +(function(){ +/*! + * jQuery 1.2.3 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ + * $Rev: 4663 $ + */ + +// Map over jQuery in case of overwrite +if ( window.jQuery ) + var _jQuery = window.jQuery; + +var jQuery = window.jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.prototype.init( selector, context ); +}; + +// Map over the $ in case of overwrite +if ( window.$ ) + var _$ = window.$; + +// Map the jQuery namespace to the '$' one +window.$ = jQuery; + +// A simple way to check for HTML strings or ID strings +// (both of which we optimize for) +var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; + +// Is it a simple selector +var isSimple = /^.[^:#\[\.]*$/; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + return this; + + // Handle HTML strings + } else if ( typeof selector == "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Make sure an element was located + if ( elem ) + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + else { + this[0] = elem; + this.length = 1; + return this; + } + + else + selector = []; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return new jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); + + return this.setArray( + // HANDLE: $(array) + selector.constructor == Array && selector || + + // HANDLE: $(arraylike) + // Watch for when an array-like object, contains DOM nodes, is passed in as the selector + (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || + + // HANDLE: $(*) + [ selector ] ); + }, + + // The current version of jQuery being used + jquery: "1.2.3", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // The number of elements contained in the matched element set + length: 0, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + var ret = -1; + + // Locate the position of the desired element + this.each(function(i){ + if ( this == elem ) + ret = i; + }); + + return ret; + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( name.constructor == String ) + if ( value == undefined ) + return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text != "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) + // The elements to wrap the target around + jQuery( html, this[0].ownerDocument ) + .clone() + .insertBefore( this[0] ) + .map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }) + .append(this); + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, false, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, true, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + find: function( selector ) { + var elems = jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + }); + + return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? + jQuery.unique( elems ) : + elems ); + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var clone = this.cloneNode(true), + container = document.createElement("div"); + container.appendChild(clone); + return jQuery.clean([container.innerHTML])[0]; + } else + return this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if ( events === true ) + this.find("*").andSelf().each(function(i){ + if (this.nodeType == 3) + return; + var events = jQuery.data( this, "events" ); + + for ( var type in events ) + for ( var handler in events[ type ] ) + jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); + }); + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, this ) ); + }, + + not: function( selector ) { + if ( selector.constructor == String ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ) ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return !selector ? this : this.pushStack( jQuery.merge( + this.get(), + selector.constructor == String ? + jQuery( selector ).get() : + selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? + selector : [selector] ) ); + }, + + is: function( selector ) { + return selector ? + jQuery.multiFilter( selector, this ).length > 0 : + false; + }, + + hasClass: function( selector ) { + return this.is( "." + selector ); + }, + + val: function( value ) { + if ( value == undefined ) { + + if ( this.length ) { + var elem = this[0]; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + + // Everything else, we just grab the value + } else + return (this[0].value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = value.constructor == Array ? + value : + [ value ]; + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value == undefined ? + (this.length ? + this[0].innerHTML : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + data: function( key, value ){ + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value == null ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data == undefined && this.length ) + data = jQuery.data( this[0], key ); + + return data == null && parts[1] ? + this.data( parts[0] ) : + data; + } else + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ + jQuery.data( this, key, value ); + }); + }, + + removeData: function( key ){ + return this.each(function(){ + jQuery.removeData( this, key ); + }); + }, + + domManip: function( args, table, reverse, callback ) { + var clone = this.length > 1, elems; + + return this.each(function(){ + if ( !elems ) { + elems = jQuery.clean( args, this.ownerDocument ); + + if ( reverse ) + elems.reverse(); + } + + var obj = this; + + if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) + obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); + + var scripts = jQuery( [] ); + + jQuery.each(elems, function(){ + var elem = clone ? + jQuery( this ).clone( true )[0] : + this; + + // execute all scripts after the elements have been injected + if ( jQuery.nodeName( elem, "script" ) ) { + scripts = scripts.add( elem ); + } else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document + callback.call( obj, elem ); + } + }); + + scripts.each( evalScript ); + }); + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.prototype.init.prototype = jQuery.prototype; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( target.constructor == Boolean ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target != "object" && typeof target != "function" ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == 1 ) { + target = this; + i = 0; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + // Prevent never-ending loop + if ( target === options[ name ] ) + continue; + + // Recurse if we're merging object values + if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) + target[ name ] = jQuery.extend( target[ name ], options[ name ] ); + + // Don't bring in undefined values + else if ( options[ name ] != undefined ) + target[ name ] = options[ name ]; + + } + + // Return the modified object + return target; +}; + +var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; + +// exclude the following css properties to add px +var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning this function. + isFunction: function( fn ) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /function/i.test( fn + "" ); + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + data = jQuery.trim( data ); + + if ( data ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.browser.msie ) + script.text = data; + else + script.appendChild( document.createTextNode( data ) ); + + head.appendChild( script ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache: {}, + + data: function( elem, name, data ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if ( !id ) + id = elem[ expando ] = ++uuid; + + // Only generate the data cache if we're + // trying to access or manipulate it + if ( name && !jQuery.cache[ id ] ) + jQuery.cache[ id ] = {}; + + // Prevent overriding the named cache with undefined values + if ( data != undefined ) + jQuery.cache[ id ][ name ] = data; + + // Return the named cache data, or the ID for the element + return name ? + jQuery.cache[ id ][ name ] : + id; + }, + + removeData: function( elem, name ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( jQuery.cache[ id ] ) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + + for ( name in jQuery.cache[ id ] ) + break; + + if ( !name ) + jQuery.removeData( elem ); + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch(e){ + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) + elem.removeAttribute( expando ); + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each: function( object, callback, args ) { + if ( args ) { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( var i = 0, length = object.length; i < length; i++ ) + if ( callback.apply( object[ i ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( object.length == undefined ) { + for ( var name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var i = 0, length = object.length, value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames != undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use is(".class") + has: function( elem, className ) { + return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + var padding = 0, border = 0; + jQuery.each( which, function() { + padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + val -= Math.round(padding + border); + } + + if ( jQuery(elem).is(":visible") ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, val); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret; + + // A helper method for determining if an element's values are broken + function color( elem ) { + if ( !jQuery.browser.safari ) + return false; + + var ret = document.defaultView.getComputedStyle( elem, null ); + return !ret || ret.getPropertyValue("color") == ""; + } + + // We need to handle opacity special in IE + if ( name == "opacity" && jQuery.browser.msie ) { + ret = jQuery.attr( elem.style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = elem.style.outline; + elem.style.outline = "0 solid black"; + elem.style.outline = save; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && elem.style && elem.style[ name ] ) + ret = elem.style[ name ]; + + else if ( document.defaultView && document.defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); + + if ( getComputedStyle && !color( elem ) ) + ret = getComputedStyle.getPropertyValue( name ); + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + var swap = [], stack = []; + + // Locate all of the parent display: none elements + for ( var a = elem; a && color(a); a = a.parentNode ) + stack.unshift(a); + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for ( var i = 0; i < stack.length; i++ ) + if ( color( stack[ i ] ) ) { + swap[ i ] = stack[ i ].style.display; + stack[ i ].style.display = "block"; + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = name == "display" && swap[ stack.length - 1 ] != null ? + "none" : + ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; + + // Finally, revert the display styles back + for ( var i = 0; i < swap.length; i++ ) + if ( swap[ i ] != null ) + stack[ i ].style.display = swap[ i ]; + } + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + elem.style.left = ret || 0; + ret = elem.style.pixelLeft + "px"; + + // Revert the changed values + elem.style.left = style; + elem.runtimeStyle.left = runtimeStyle; + } + } + + return ret; + }, + + clean: function( elems, context ) { + var ret = []; + context = context || document; + // !context.createElement fails in IE with an error but returns typeof 'object' + if (typeof context.createElement == 'undefined') + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + jQuery.each(elems, function(i, elem){ + if ( !elem ) + return; + + if ( elem.constructor == Number ) + elem = elem.toString(); + + // Convert html string into DOM nodes + if ( typeof elem == "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
    " ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and \ No newline at end of file diff --git a/plugins/Minify/minify.php b/plugins/Minify/minify.php new file mode 100644 index 0000000000..2de2d6d26f --- /dev/null +++ b/plugins/Minify/minify.php @@ -0,0 +1,122 @@ +. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +// We bundle the minify library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/minify/min/lib'); + +class MinifyAction extends Action +{ + const TYPE_CSS = 'text/css'; + const TYPE_HTML = 'text/html'; + // there is some debate over the ideal JS Content-Type, but this is the + // Apache default and what Yahoo! uses.. + const TYPE_JS = 'application/x-javascript'; + + const cacheKey = 'minify'; + + var $file; + + function isReadOnly($args) + { + return true; + } + + function prepare($args) + { + parent::prepare($args); + $this->v = $args['v']; + + $f = $this->arg('f'); + if(isset($f)) { + $this->file = INSTALLDIR.'/'.$f; + if(file_exists($this->file)) { + return true; + } else { + $this->clientError(_('f parameter is not a valid path'),404); + return false; + } + }else{ + $this->clientError(_('f parameter is required'),500); + return false; + } + } + + function etag() + { + if(isset($this->v)) { + return "\"" . crc32($this->file . $this->v) . "\""; + }else{ + $stat = stat($this->file); + return '"' . $stat['ino'] . '-' . $stat['size'] . '-' . $stat['mtime'] . '"'; + } + } + + function lastModified() + { + return filemtime($this->file); + } + + function handle($args) + { + parent::handle($args); + + $c = common_memcache(); + if (!empty($c)) { + $out = $c->get(common_cache_key(self::cacheKey . ':' . $this->file)); + } + if(empty($out)) { + $out = $this->minify($this->file); + } + if (!empty($c)) { + $c->set(common_cache_key(self::cacheKey . ':' . $this->file), $out); + } + + $sec = session_cache_expire() * 60; + header('Cache-Control: public, max-age=' . $sec); + header('Pragma: public'); + $this->raw($out); + } + + function minify($file) + { + $info = pathinfo($file); + switch(strtolower($info['extension'])){ + case 'js': + require_once('JSMin.php'); + $out = JSMin::minify(file_get_contents($file)); + header('Content-Type: ' . self::TYPE_JS); + break; + case 'css': + require_once('Minify/CSS.php'); + $options = array(); + $options['currentDir'] = dirname($file); + $options['docRoot'] = INSTALLDIR; + $out = Minify_CSS::minify(file_get_contents($file),$options); + header('Content-Type: ' . self::TYPE_CSS); + break; + default: + $this->clientError(_('File type not supported'),500); + return false; + } + return $out; + } +} + From 2c07d4a530e2e8ea6a48f08806f5026df1132152 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 13:39:51 -0500 Subject: [PATCH 13/70] utility function to output inline JavaScript --- lib/htmloutputter.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index d267526c88..3fabc4037a 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -360,6 +360,25 @@ class HTMLOutputter extends XMLOutputter ' '); } + /** + * output a script (almost always javascript) tag with inline + * code. + * + * @param string $code relative or absolute script path + * @param string $type 'type' attribute value of the tag + * + * @return void + */ + + function inlineScript($code, $type='text/javascript') + { + $this->elementStart('script', array('type' => $type)); + $this->raw('/*raw($code); + $this->raw(' /*]]>*/'); // XHTML compat for Safari + $this->elementEnd('script'); + } + /** * output a css link * @@ -414,7 +433,6 @@ class HTMLOutputter extends XMLOutputter } } - /** * Internal script to autofocus the given element on page onload. * From a92228c713c73b4015766b45eecd4769a57ae232 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 14:31:19 -0500 Subject: [PATCH 14/70] Update Mapstraction to properly scrape data from notice-list pages Refactored the JavaScript for Mapstraction use so it scrapes data from the HTML of the page it's on, if possible, and otherwise generates a JSON array. --- plugins/Mapstraction/MapstractionPlugin.php | 22 +++++- plugins/Mapstraction/map.php | 9 +-- plugins/Mapstraction/usermap.js | 83 +++++++++++---------- 3 files changed, 65 insertions(+), 49 deletions(-) diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index c4f9cd77de..ba7827151b 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -112,6 +112,11 @@ class MapstractionPlugin extends Plugin { $actionName = $action->trimmed('action'); + if (!in_array($actionName, + array('showstream', 'all', 'usermap', 'allmap'))) { + return true; + } + switch ($this->provider) { case 'cloudmade': @@ -143,9 +148,20 @@ class MapstractionPlugin extends Plugin $action->script(common_path('plugins/Mapstraction/usermap.js')); - $action->elementStart('script', array('type' => 'text/javascript')); - $action->raw(sprintf('var _provider = "%s";', $this->provider)); - $action->elementEnd('script'); + $action->inlineScript(sprintf('var _provider = "%s";', $this->provider)); + + // usermap and allmap handle this themselves + + if (in_array($actionName, + array('showstream', 'all'))) { + $action->inlineScript('$(document).ready(function() { '. + ' var user = null; '. + (($actionName == 'showstream') ? ' user = scrapeUser(); ' : '') . + ' var notices = scrapeNotices(user); ' . + ' console.log(notices); ' . + ' showMapstraction($("#map_canvas"), notices); '. + '});'); + } return true; } diff --git a/plugins/Mapstraction/map.php b/plugins/Mapstraction/map.php index 89723f43ce..734e480884 100644 --- a/plugins/Mapstraction/map.php +++ b/plugins/Mapstraction/map.php @@ -128,12 +128,9 @@ class MapAction extends OwnerDesignAction } } - $this->elementStart('script', array('type' => 'text/javascript')); - $this->raw('/*raw('var _notices = ' . json_encode($jsonArray).'; '); - $this->raw('showMapstraction($("#map_canvas"),_notices);'); - $this->raw('/*]]>*/'); // XHTML compat for Safari - $this->elementEnd('script'); + $this->inlineScript('$(document).ready(function() { '. + ' var _notices = ' . json_encode($jsonArray).'; ' . + 'showMapstraction($("#map_canvas"), _notices); });'); return true; } diff --git a/plugins/Mapstraction/usermap.js b/plugins/Mapstraction/usermap.js index e667dd5790..4b7a6c26b4 100644 --- a/plugins/Mapstraction/usermap.js +++ b/plugins/Mapstraction/usermap.js @@ -1,40 +1,32 @@ -$(document).ready(function() { +function scrapeNotices(user) +{ var notices = []; $(".notice").each(function(){ - var notice = getNoticeFromElement($(this)); - if(notice['geo']) - notices.push(notice); + var notice = getNoticeFromElement($(this)); + if (user) { + notice['user'] = user; + } else { + notice['user'] = getUserFromElement($(this)); + } + if(notice['geo']) + notices.push(notice); }); - if($("#map_canvas").length && notices.length>0) - { - showMapstraction($("#map_canvas"), notices); - } - $('.geo').click(function(){ - var noticeElement = $(this).closest(".notice"); - notice = getNoticeFromElement(noticeElement); + return notices; +} - $.fn.jOverlay.options = { - color : '#000', - opacity : '0.6', - zIndex : 99, - center : false, - bgClickToClose : true, - autoHide : true, - css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'} - }; - var html="
    "; - html+=""; - html+=$("
    ").append($(this).clone()).html(); - $().jOverlay({ "html": html }); - $('#jOverlayContent').show(); - $('#jOverlayContent button').click($.closeOverlay); - - showMapstraction($("#map_canvas_popup"), notice); +function scrapeUser() +{ + var avatarURL = $(".entity_profile .entity_depiction img.avatar").attr('src'); + var profileURL = $(".entity_profile .entity_nickname .url").attr('href'); + var nickname = $(".entity_profile .entity_nickname .nickname").text(); - return false; - }); -}); + return { + 'profile_image_url': avatarURL, + 'profile_url': profileURL, + 'screen_name': nickname + }; +} function getMicroformatValue(element) { @@ -48,23 +40,34 @@ function getMicroformatValue(element) function getNoticeFromElement(noticeElement) { var notice = {}; - if(noticeElement.find(".geo").length){ + + if(noticeElement.find(".geo").length) { var latlon = noticeElement.find(".geo").attr('title').split(";"); notice['geo']={'coordinates': [ parseFloat(latlon[0]), parseFloat(latlon[1])] }; } - notice['user']={ - 'profile_image_url': noticeElement.find("img.avatar").attr('src'), - 'profile_url': noticeElement.find(".author a.url").attr('href'), - 'screen_name': noticeElement.find(".author .nickname").text() - }; - notice['html']=noticeElement.find(".entry-content").html(); - notice['url']=noticeElement.find("a.timestamp").attr('href'); - notice['created_at']=noticeElement.find("abbr.published").text(); + + notice['html'] = noticeElement.find(".entry-content").html(); + notice['url'] = noticeElement.find("a.timestamp").attr('href'); + notice['created_at'] = noticeElement.find("abbr.published").text(); + return notice; } +function getUserFromElement(noticeElement) +{ + var avatarURL = noticeElement.find("img.avatar").attr('src'); + var profileURL = noticeElement.find(".author a.url").attr('href'); + var nickname = noticeElement.find(".author .nickname").text(); + + return { + 'profile_image_url': avatarURL, + 'profile_url': profileURL, + 'screen_name': nickname + }; +} + function showMapstraction(element, notices) { if(element instanceof jQuery) element = element[0]; if(! $.isArray(notices)) notices = [notices]; From e7e9dfceb4fd6db81bf266d71a3ec0b1933fbd02 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 14:36:24 -0500 Subject: [PATCH 15/70] remove unnecessary debugging code from mapstraction output --- plugins/Mapstraction/MapstractionPlugin.php | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index ba7827151b..f20e81b0ea 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -158,7 +158,6 @@ class MapstractionPlugin extends Plugin ' var user = null; '. (($actionName == 'showstream') ? ' user = scrapeUser(); ' : '') . ' var notices = scrapeNotices(user); ' . - ' console.log(notices); ' . ' showMapstraction($("#map_canvas"), notices); '. '});'); } From cff12603cf13ddde59f82597cdf896bf0deaf596 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 4 Dec 2009 20:17:42 +0000 Subject: [PATCH 16/70] Make imported Twitter notices show up via real time plugins. --- plugins/TwitterBridge/TwitterBridgePlugin.php | 7 ++++++- .../daemons/twitterstatusfetcher.php | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index ad3c2e551c..adf9ceda34 100644 --- a/plugins/TwitterBridge/TwitterBridgePlugin.php +++ b/plugins/TwitterBridge/TwitterBridgePlugin.php @@ -127,7 +127,12 @@ class TwitterBridgePlugin extends Plugin */ function onStartEnqueueNotice($notice, &$transports) { - array_push($transports, 'twitter'); + // Avoid a possible loop + + if ($notice->source != 'twitter') { + array_push($transports, 'twitter'); + } + return true; } diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index eba1d563b3..d8901f47ba 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -209,7 +209,11 @@ class TwitterStatusFetcher extends ParallelizingDaemon continue; } - $this->saveStatus($status, $flink); + $notice = null; + + $notice = $this->saveStatus($status, $flink); + + common_broadcast_notice($notice); } // Okay, record the time we synced with Twitter for posterity @@ -235,12 +239,14 @@ class TwitterStatusFetcher extends ParallelizingDaemon $uri = 'http://twitter.com/' . $status->user->screen_name . '/status/' . $status->id; - $notice = Notice::staticGet('uri', $uri); - // check to see if we've already imported the status + $notice = Notice::staticGet('uri', $uri); + if (empty($notice)) { + // XXX: transaction here? + $notice = new Notice(); $notice->profile_id = $id; @@ -257,6 +263,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon $id = $notice->insert(); Event::handle('EndNoticeSave', array($notice)); } + } if (!Notice_inbox::pkeyGet(array('notice_id' => $notice->id, @@ -270,7 +277,12 @@ class TwitterStatusFetcher extends ParallelizingDaemon $inbox->source = NOTICE_INBOX_SOURCE_GATEWAY; // From a private source $inbox->insert(); + } + + $notice->blowCaches(); + + return $notice; } function ensureProfile($user) From 99b23782ef871d774e0c4abffc3632ea70ee149a Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 15:30:43 -0500 Subject: [PATCH 17/70] let Geonames clients use commercial Web service --- plugins/GeonamesPlugin.php | 59 ++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php index 340a6f0bfa..fdbf79e413 100644 --- a/plugins/GeonamesPlugin.php +++ b/plugins/GeonamesPlugin.php @@ -51,6 +51,10 @@ class GeonamesPlugin extends Plugin { const LOCATION_NS = 1; + public $host = 'ws.geonames.org'; + public $username = null; + public $token = null; + /** * convert a name into a Location object * @@ -75,12 +79,11 @@ class GeonamesPlugin extends Plugin // XXX: break down a name by commas, narrow by each - $str = http_build_query(array('maxRows' => 1, - 'q' => $name, - 'lang' => $language, - 'type' => 'json')); - - $result = $client->get('http://ws.geonames.org/search?'.$str); + $result = $client->get($this->wsUrl('search', + array('maxRows' => 1, + 'q' => $name, + 'lang' => $language, + 'type' => 'json'))); if ($result->isOk()) { $rj = json_decode($result->getBody()); @@ -135,10 +138,9 @@ class GeonamesPlugin extends Plugin $client = HTTPClient::start(); - $str = http_build_query(array('geonameId' => $id, - 'lang' => $language)); - - $result = $client->get('http://ws.geonames.org/hierarchyJSON?'.$str); + $result = $client->get($this->wsUrl('hierarchyJSON', + array('geonameId' => $id, + 'lang' => $language))); if ($result->isOk()) { @@ -205,12 +207,11 @@ class GeonamesPlugin extends Plugin $client = HTTPClient::start(); - $str = http_build_query(array('lat' => $lat, - 'lng' => $lon, - 'lang' => $language)); - $result = - $client->get('http://ws.geonames.org/findNearbyPlaceNameJSON?'.$str); + $client->get($this->wsUrl('findNearbyPlaceNameJSON', + array('lat' => $lat, + 'lng' => $lon, + 'lang' => $language))); if ($result->isOk()) { @@ -286,10 +287,9 @@ class GeonamesPlugin extends Plugin $client = HTTPClient::start(); - $str = http_build_query(array('geonameId' => $location->location_id, - 'lang' => $language)); - - $result = $client->get('http://ws.geonames.org/hierarchyJSON?'.$str); + $result = $client->get($this->wsUrl('hierarchyJSON', + array('geonameId' => $location->location_id, + 'lang' => $language))); if ($result->isOk()) { @@ -376,7 +376,7 @@ class GeonamesPlugin extends Plugin { $c = common_memcache(); - if (!$c) { + if (empty($c)) { return null; } @@ -387,7 +387,7 @@ class GeonamesPlugin extends Plugin { $c = common_memcache(); - if (!$c) { + if (empty($c)) { return null; } @@ -398,7 +398,7 @@ class GeonamesPlugin extends Plugin { $c = common_memcache(); - if (!$c) { + if (empty($c)) { return null; } @@ -411,4 +411,19 @@ class GeonamesPlugin extends Plugin implode(',', array_keys($attrs)) . ':'. common_keyize(implode(',', array_values($attrs)))); } + + function wsUrl($method, $params) + { + if (!empty($this->username)) { + $params['username'] = $this->username; + } + + if (!empty($this->token)) { + $params['token'] = $this->token; + } + + $str = http_build_query($params); + + return 'http://'.$this->host.'/'.$method.'?'.$str; + } } From e074fe659903cb6cbd3dace96889f34a8c8796c9 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 15:34:25 -0500 Subject: [PATCH 18/70] add logging utilities to Plugin class --- lib/plugin.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/plugin.php b/lib/plugin.php index 87d7be5a75..2c77c3e120 100644 --- a/lib/plugin.php +++ b/lib/plugin.php @@ -76,4 +76,14 @@ class Plugin { return true; } + + protected function log($level, $msg) + { + common_log($level, get_class($this) . ': '.$msg); + } + + protected function debug($msg) + { + $this->log(LOG_DEBUG, $msg); + } } From 41f10b742c4c3c21a8783050c6bb55dad17f050d Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 15:34:41 -0500 Subject: [PATCH 19/70] remove duplicate log() function from RealtimePlugin --- plugins/Realtime/RealtimePlugin.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index cbfa6bae00..030df405b0 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -120,7 +120,7 @@ class RealtimePlugin extends Plugin function onEndShowStatusNetStyles($action) { - $action->cssLink(common_path('plugins/Realtime/realtimeupdate.css'), + $action->cssLink(common_path('plugins/Realtime/realtimeupdate.css'), null, 'screen, projection, tv'); return true; } @@ -293,13 +293,6 @@ class RealtimePlugin extends Plugin return $tags; } - // Push this up to Plugin - - function log($level, $msg) - { - common_log($level, get_class($this) . ': '.$msg); - } - function _getScripts() { return array('plugins/Realtime/realtimeupdate.js', From eb0a5977ff7e325022d460ae3cf540f3415bd33d Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 4 Dec 2009 20:39:50 +0000 Subject: [PATCH 20/70] Don't try to broadcast the notice if something went wrong. --- plugins/TwitterBridge/daemons/twitterstatusfetcher.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index d8901f47ba..b4ca12be23 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -213,7 +213,9 @@ class TwitterStatusFetcher extends ParallelizingDaemon $notice = $this->saveStatus($status, $flink); - common_broadcast_notice($notice); + if (!empty($notice)) { + common_broadcast_notice($notice); + } } // Okay, record the time we synced with Twitter for posterity From 098426cee901d264332c0ad0dd2155d30487d35f Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 4 Dec 2009 16:25:05 -0500 Subject: [PATCH 21/70] configurable expiry for cached Geonames data defaults to 90 days --- plugins/GeonamesPlugin.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php index fdbf79e413..a750f12426 100644 --- a/plugins/GeonamesPlugin.php +++ b/plugins/GeonamesPlugin.php @@ -54,6 +54,7 @@ class GeonamesPlugin extends Plugin public $host = 'ws.geonames.org'; public $username = null; public $token = null; + public $expiry = 7776000; // 90-day expiry /** * convert a name into a Location object @@ -197,6 +198,9 @@ class GeonamesPlugin extends Plugin function onLocationFromLatLon($lat, $lon, $language, &$location) { + $lat = rtrim($lat, "0"); + $lon = rtrim($lon, "0"); + $loc = $this->getCache(array('lat' => $lat, 'lon' => $lon)); @@ -380,7 +384,11 @@ class GeonamesPlugin extends Plugin return null; } - return $c->get($this->cacheKey($attrs)); + $key = $this->cacheKey($attrs); + + $value = $c->get($key); + + return $value; } function setCache($attrs, $loc) @@ -391,18 +399,11 @@ class GeonamesPlugin extends Plugin return null; } - $c->set($this->cacheKey($attrs), $loc); - } + $key = $this->cacheKey($attrs); - function clearCache($attrs) - { - $c = common_memcache(); + $result = $c->set($key, $loc, 0, time() + $this->expiry); - if (empty($c)) { - return null; - } - - $c->delete($this->cacheKey($attrs)); + return $result; } function cacheKey($attrs) From 4881be47c798688c3ae20f621d06e15adbc9c17e Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 4 Dec 2009 22:40:07 +0000 Subject: [PATCH 22/70] Don't depend on a User being available when looking up Design and timezone for a profile (because some profiles are remote, etc.) --- lib/api.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/api.php b/lib/api.php index 5a3bb5ee45..eacb80dbea 100644 --- a/lib/api.php +++ b/lib/api.php @@ -134,19 +134,17 @@ class ApiAction extends Action $twitter_user['protected'] = false; # not supported by StatusNet yet $twitter_user['followers_count'] = $profile->subscriberCount(); - $design = null; $user = $profile->getUser(); + $design = null; // Note: some profiles don't have an associated user + $defaultDesign = Design::siteDesign(); + if (!empty($user)) { $design = $user->getDesign(); } - if (empty($design)) { - $design = Design::siteDesign(); - } - $color = Design::toWebColor(empty($design->backgroundcolor) ? $defaultDesign->backgroundcolor : $design->backgroundcolor); $twitter_user['profile_background_color'] = ($color == null) ? '' : '#'.$color->hexValue(); $color = Design::toWebColor(empty($design->textcolor) ? $defaultDesign->textcolor : $design->textcolor); @@ -165,7 +163,7 @@ class ApiAction extends Action $timezone = 'UTC'; - if ($user->timezone) { + if (!empty($user) && !empty($user->timezone)) { $timezone = $user->timezone; } From 4c8bed8ba0558c5834621331f253e05029fa4e43 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 19:41:51 -0500 Subject: [PATCH 23/70] Use inlineScript() everywhere inline scripts are written --- lib/messageform.php | 3 +-- lib/noticeform.php | 3 +-- plugins/Facebook/FacebookPlugin.php | 4 +--- plugins/GoogleAnalyticsPlugin.php | 8 ++------ plugins/PiwikAnalyticsPlugin.php | 15 +++++---------- plugins/Realtime/RealtimePlugin.php | 6 +----- plugins/UserFlag/UserFlagPlugin.php | 4 +--- 7 files changed, 12 insertions(+), 31 deletions(-) diff --git a/lib/messageform.php b/lib/messageform.php index b034be3122..4df193c6d1 100644 --- a/lib/messageform.php +++ b/lib/messageform.php @@ -154,8 +154,7 @@ class MessageForm extends Form $contentLimit = Message::maxContent(); - $this->out->element('script', array('type' => 'text/javascript'), - 'maxLength = ' . $contentLimit . ';'); + $this->out->inlineScript('maxLength = ' . $contentLimit . ';'); if ($contentLimit > 0) { $this->out->elementStart('dl', 'form_note'); diff --git a/lib/noticeform.php b/lib/noticeform.php index ec8624597e..0dd3f2d777 100644 --- a/lib/noticeform.php +++ b/lib/noticeform.php @@ -178,8 +178,7 @@ class NoticeForm extends Form $contentLimit = Notice::maxContent(); - $this->out->element('script', array('type' => 'text/javascript'), - 'maxLength = ' . $contentLimit . ';'); + $this->out->inlineScript('maxLength = ' . $contentLimit . ';'); if ($contentLimit > 0) { $this->out->elementStart('dl', 'form_note'); diff --git a/plugins/Facebook/FacebookPlugin.php b/plugins/Facebook/FacebookPlugin.php index 047477d9cb..40c911cce3 100644 --- a/plugins/Facebook/FacebookPlugin.php +++ b/plugins/Facebook/FacebookPlugin.php @@ -185,7 +185,6 @@ class FacebookPlugin extends Plugin // XXX: Facebook says we don't need this FB_RequireFeatures(), // but we actually do, for IE and Safari. Gar. - $js = ''; $js = sprintf($js, $apikey, $login_url, $logout_url); @@ -227,7 +225,7 @@ class FacebookPlugin extends Plugin $js = str_replace(' ', '', $js); - $action->raw(" $js"); // leading two spaces to make it line up + $action->inlineScript($js); } } diff --git a/plugins/GoogleAnalyticsPlugin.php b/plugins/GoogleAnalyticsPlugin.php index 7f3d209ee6..6891ee6a7b 100644 --- a/plugins/GoogleAnalyticsPlugin.php +++ b/plugins/GoogleAnalyticsPlugin.php @@ -67,11 +67,7 @@ class GoogleAnalyticsPlugin extends Plugin 'pageTracker._trackPageview();'. '} catch(err) {}', $this->code); - $action->elementStart('script', array('type' => 'text/javascript')); - $action->raw($js1); - $action->elementEnd('script'); - $action->elementStart('script', array('type' => 'text/javascript')); - $action->raw($js2); - $action->elementEnd('script'); + $action->inlineScript($js1); + $action->inlineScript($js2); } } diff --git a/plugins/PiwikAnalyticsPlugin.php b/plugins/PiwikAnalyticsPlugin.php index 54faa0bdbe..fefd098671 100644 --- a/plugins/PiwikAnalyticsPlugin.php +++ b/plugins/PiwikAnalyticsPlugin.php @@ -81,25 +81,20 @@ class PiwikAnalyticsPlugin extends Plugin function onEndShowScripts($action) { - $piwikCode = << - - - - ENDOFPIWIK; - $action->raw($piwikCode); + $action->inlineScript($piwikCode1); + $action->inlineScript($piwikCode2); return true; } } diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index 030df405b0..3e33fdaf19 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -105,15 +105,11 @@ class RealtimePlugin extends Plugin $realtimeUI = ' RealtimeUpdate.initActions("'.$url.'", "'.$timeline.'", "'. $pluginPath .'");'; } - $action->elementStart('script', array('type' => 'text/javascript')); - $script = ' $(document).ready(function() { '. $realtimeUI. $this->_updateInitialize($timeline, $user_id). '}); '; - $action->raw($script); - - $action->elementEnd('script'); + $action->inlineScript($script); return true; } diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php index e13c2555aa..75dcca4fcb 100644 --- a/plugins/UserFlag/UserFlagPlugin.php +++ b/plugins/UserFlag/UserFlagPlugin.php @@ -145,9 +145,7 @@ class UserFlagPlugin extends Plugin function onEndShowScripts($action) { - $action->elementStart('script', array('type' => 'text/javascript')); - $action->raw('/* 0) { SN.U.FormXHR($(".form_entity_flag")); } /*]]>*/'); - $action->elementEnd('script'); + $action->inlineScript('if ($(".form_entity_flag").length > 0) { SN.U.FormXHR($(".form_entity_flag")); }'); return true; } } From 847013db692303cde10f5f161d9fedd787421a37 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 19:44:45 -0500 Subject: [PATCH 24/70] only write the javascript CDATA blocks if the type is javascript (it's not the correct syntax for other languages) --- lib/htmloutputter.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index a0066594f2..539e356e82 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -367,7 +367,7 @@ class HTMLOutputter extends XMLOutputter * output a script (almost always javascript) tag with inline * code. * - * @param string $code relative or absolute script path + * @param string $code code to put in the script tag * @param string $type 'type' attribute value of the tag * * @return void @@ -376,9 +376,13 @@ class HTMLOutputter extends XMLOutputter function inlineScript($code, $type='text/javascript') { $this->elementStart('script', array('type' => $type)); - $this->raw('/*raw('/*raw($code); - $this->raw(' /*]]>*/'); // XHTML compat for Safari + if($type == 'text/javascript') { + $this->raw(' /*]]>*/'); // XHTML compat + } $this->elementEnd('script'); } From 7ddf911f5d54ba4997b3d237ae7cd1effb74a120 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 19:51:44 -0500 Subject: [PATCH 25/70] Add 2 new events: StartInlineScriptElement and EndInlineScriptElement --- EVENTS.txt | 10 ++++++++++ lib/htmloutputter.php | 19 +++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/EVENTS.txt b/EVENTS.txt index f4ec620338..678df8b0ae 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -595,3 +595,13 @@ EndScriptElement: After a element is written - $action - $src - $type + +StartInlineScriptElement: Before a element is written +- $action +- &$code +- &$type + +EndInlineScriptElement: After a element is written +- $action +- $code +- $type diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index 539e356e82..0c2d18da32 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -375,15 +375,18 @@ class HTMLOutputter extends XMLOutputter function inlineScript($code, $type='text/javascript') { - $this->elementStart('script', array('type' => $type)); - if($type == 'text/javascript') { - $this->raw('/*elementStart('script', array('type' => $type)); + if($type == 'text/javascript') { + $this->raw('/*raw($code); + if($type == 'text/javascript') { + $this->raw(' /*]]>*/'); // XHTML compat + } + $this->elementEnd('script'); + Event::handle('EndInlineScriptElement', array($this,$code,$type)); } - $this->raw($code); - if($type == 'text/javascript') { - $this->raw(' /*]]>*/'); // XHTML compat - } - $this->elementEnd('script'); } /** From b3086d3c68ed2d3ceff3ce8fc91a867fc07c441a Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 20:19:55 -0500 Subject: [PATCH 26/70] Add style function to output style() tags Add 2 new events: StartStyleElement and EndStyleElement --- EVENTS.txt | 12 ++++++++++++ lib/htmloutputter.php | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/EVENTS.txt b/EVENTS.txt index 678df8b0ae..a056aa0a1e 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -586,6 +586,18 @@ EndCssLinkElement: After a element is written - $theme - $media +StartStyleElement: Before a element is written +- $action +- &$code +- &$type +- &$media + +EndStyleElement: After a element is written +- $action +- $code +- $type +- $media + StartScriptElement: Before a element is written - $action - &$src diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index 0c2d18da32..a88a5b82c5 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -418,6 +418,27 @@ class HTMLOutputter extends XMLOutputter } } + /** + * output a style (almost always css) tag with inline + * code. + * + * @param string $code code to put in the style tag + * @param string $type 'type' attribute value of the tag + * @param string $media 'media' attribute value of the tag + * + * @return void + */ + + function style($code, $type = 'text/css', $media = null) + { + if(Event::handle('StartStyleElement', array($this,&$code,&$type,&$media))) { + $this->elementStart('style', array('type' => $type, 'media' => $media)); + $this->raw($code); + $this->elementEnd('style'); + Event::handle('EndStyleElement', array($this,$code,$type,$media)); + } + } + /** * output an HTML textarea and associated elements * From d31b1d774e5fcbb424ec60688ff4c76badc2b136 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 20:20:44 -0500 Subject: [PATCH 27/70] use the new htmloutputter->style() function --- classes/Design.php | 2 +- plugins/Recaptcha/RecaptchaPlugin.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/Design.php b/classes/Design.php index 89ae50c8cb..4e7d7dfb25 100644 --- a/classes/Design.php +++ b/classes/Design.php @@ -101,7 +101,7 @@ class Design extends Memcached_DataObject } if (0 != mb_strlen($css)) { - $out->element('style', array('type' => 'text/css'), $css); + $out->style($css); } } diff --git a/plugins/Recaptcha/RecaptchaPlugin.php b/plugins/Recaptcha/RecaptchaPlugin.php index 1a51b16beb..3a510ef11c 100644 --- a/plugins/Recaptcha/RecaptchaPlugin.php +++ b/plugins/Recaptcha/RecaptchaPlugin.php @@ -69,7 +69,7 @@ class RecaptchaPlugin extends Plugin $action->startXML('html'); - $action->raw(''); + $action->style('#recaptcha_area{float:left;}'); return false; } From 675e32ac9ac1bdcfbb6e293eb363d2b592140ae7 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 20:21:05 -0500 Subject: [PATCH 28/70] use cssLink() instead of element() to write out references to CSS --- plugins/MobileProfile/MobileProfilePlugin.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index 0b1e4de286..8b5e5f31da 100644 --- a/plugins/MobileProfile/MobileProfilePlugin.php +++ b/plugins/MobileProfile/MobileProfilePlugin.php @@ -243,19 +243,13 @@ class MobileProfilePlugin extends WAP20Plugin if (file_exists(Theme::file('css/mp-screen.css'))) { $action->cssLink('css/mp-screen.css', null, 'screen'); } else { - $action->element('link', array('rel' => 'stylesheet', - 'type' => 'text/css', - 'href' => common_path('plugins/MobileProfile/mp-screen.css') . '?version=' . STATUSNET_VERSION, - 'media' => 'screen')); + $action->cssLink('plugins/MobileProfile/mp-screen.css',null,'screen'); } if (file_exists(Theme::file('css/mp-handheld.css'))) { $action->cssLink('css/mp-handheld.css', null, 'handheld'); } else { - $action->element('link', array('rel' => 'stylesheet', - 'type' => 'text/css', - 'href' => common_path('plugins/MobileProfile/mp-handheld.css') . '?version=' . STATUSNET_VERSION, - 'media' => 'handheld')); + $action->cssLink('plugins/MobileProfile/mp-handheld.css',null,'handheld'); } return false; From d41a0a5ed03b2f4bbf8e8b3984960103383090d1 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 20:33:41 -0500 Subject: [PATCH 29/70] Use inlineScript() instead of element() to write inline javascript --- lib/htmloutputter.php | 7 ++----- plugins/MobileProfile/MobileProfilePlugin.php | 3 +-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index a88a5b82c5..cf93944e76 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -477,13 +477,10 @@ class HTMLOutputter extends XMLOutputter */ function autofocus($id) { - $this->elementStart('script', array('type' => 'text/javascript')); - $this->raw('/*inlineScript( ' $(document).ready(function() {'. ' var el = $("#' . $id . '");'. ' if (el.length) { el.focus(); }'. - ' });'. - ' /*]]>*/'); - $this->elementEnd('script'); + ' });'); } } diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index 8b5e5f31da..35678bedd3 100644 --- a/plugins/MobileProfile/MobileProfilePlugin.php +++ b/plugins/MobileProfile/MobileProfilePlugin.php @@ -352,8 +352,7 @@ class MobileProfilePlugin extends WAP20Plugin $contentLimit = Notice::maxContent(); - $form->out->element('script', array('type' => 'text/javascript'), - 'maxLength = ' . $contentLimit . ';'); + $form->out->inlineScript('maxLength = ' . $contentLimit . ';'); if ($contentLimit > 0) { $form->out->element('div', array('id' => 'notice_text-count'), From fa6675550885e005f6a69dfd317320dff6c4a3cd Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 22:05:18 -0500 Subject: [PATCH 30/70] Append the StatusNet version to all local, static CSS references --- lib/htmloutputter.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index cf93944e76..fd448ced5e 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -405,10 +405,11 @@ class HTMLOutputter extends XMLOutputter if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) { if(file_exists(Theme::file($src,$theme))){ - $src = Theme::path($src, $theme) . '?version=' . STATUSNET_VERSION; + $src = Theme::path($src, $theme); }else{ $src = common_path($src); } + $src.= '?version=' . STATUSNET_VERSION; } $this->element('link', array('rel' => 'stylesheet', 'type' => 'text/css', From f4fc8481e24ce4bd7714022109d75b2a22198fdf Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 23:17:19 -0500 Subject: [PATCH 31/70] Separate out some common code --- plugins/Minify/minify.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/Minify/minify.php b/plugins/Minify/minify.php index 2de2d6d26f..f8c17767c3 100644 --- a/plugins/Minify/minify.php +++ b/plugins/Minify/minify.php @@ -33,6 +33,7 @@ class MinifyAction extends Action const cacheKey = 'minify'; var $file; + var $v; function isReadOnly($args) { @@ -80,13 +81,14 @@ class MinifyAction extends Action $c = common_memcache(); if (!empty($c)) { - $out = $c->get(common_cache_key(self::cacheKey . ':' . $this->file)); + $cacheKey = common_cache_key(self::cacheKey . ':' . $this->file . '?v=' . empty($this->v)?'':$this->v); + $out = $c->get($cacheKey); } if(empty($out)) { $out = $this->minify($this->file); } if (!empty($c)) { - $c->set(common_cache_key(self::cacheKey . ':' . $this->file), $out); + $c->set($cacheKey, $out); } $sec = session_cache_expire() * 60; From 88e50003ae7840358c2a520c6cb808231b958769 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 4 Dec 2009 23:17:46 -0500 Subject: [PATCH 32/70] If a theme server is being used, do not minify theme CSS (as doing so could cause 404s) --- plugins/Minify/MinifyPlugin.php | 26 ++++++++++++++++++-------- plugins/Minify/README | 5 +++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/plugins/Minify/MinifyPlugin.php b/plugins/Minify/MinifyPlugin.php index 4d37fbc708..77fd76a849 100644 --- a/plugins/Minify/MinifyPlugin.php +++ b/plugins/Minify/MinifyPlugin.php @@ -79,23 +79,33 @@ class MinifyPlugin extends Plugin $url = parse_url($src); if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) { - $src = common_path('main/min?f='.$src.'&v=' . STATUSNET_VERSION); + $src = $this->minifyUrl($src); } } function onStartCssLinkElement($action,&$src,&$theme,&$media) { + $allowThemeMinification = + is_null(common_config('theme', 'dir')) + && is_null(common_config('theme', 'path')) + && is_null(common_config('theme', 'server')); $url = parse_url($src); if( empty($url->scheme) && empty($url->host) && empty($url->query) && empty($url->fragment)) { - if(file_exists(Theme::file($src,$theme))){ - //src is a relative path, so we can do minification - if(isset($theme)) { - $src = common_path('main/min?f=theme/'.$theme.'/'.$src.'&v=' . STATUSNET_VERSION); - } else { - $src = common_path('main/min?f=theme/default/'.$src.'&v=' . STATUSNET_VERSION); - } + if(!isset($theme)) { + $theme = common_config('site', 'theme'); + } + if($allowThemeMinification && file_exists(INSTALLDIR.'/local/theme/'.$theme.'/'.$src)) { + $src = $this->minifyUrl('local/theme/'.$theme.'/'.$src); + } else if($allowThemeMinification && file_exists(INSTALLDIR.'/theme/'.$theme.'/'.$src)) { + $src = $this->minifyUrl('theme/'.$theme.'/'.$src); + }else if(file_exists(INSTALLDIR.'/'.$src)){ + $src = $this->minifyUrl($src); } } } + + function minifyUrl($src) { + return common_local_url('minify',null,array('f' => $src ,v => STATUSNET_VERSION)); + } } diff --git a/plugins/Minify/README b/plugins/Minify/README index 7fb7e239a3..8f2eefa2c7 100644 --- a/plugins/Minify/README +++ b/plugins/Minify/README @@ -1,7 +1,8 @@ The Minify plugin minifies your CSS and Javascript, removing whitespace and comments. -Note that if enabled this plugin and use a theme server - ($config['theme']['server']), your theme server will not be used. +Note that if enabled this plugin and use a theme server, + (if any of $config['theme']['server'], $config['theme']['path'], + $config['theme']['dir'] are set) theme CSS will not be minified. Installation ============ From c08d7f1aa4ac235f524da3994c2f1aef3b0fd079 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 00:41:22 -0500 Subject: [PATCH 33/70] Minify inline JS and CSS (can be disable in configuration) --- plugins/Minify/MinifyPlugin.php | 57 +++++++++++++++++++++++++++++++++ plugins/Minify/README | 15 ++++++++- plugins/Minify/minify.php | 13 ++------ 3 files changed, 74 insertions(+), 11 deletions(-) diff --git a/plugins/Minify/MinifyPlugin.php b/plugins/Minify/MinifyPlugin.php index 77fd76a849..71fade19a5 100644 --- a/plugins/Minify/MinifyPlugin.php +++ b/plugins/Minify/MinifyPlugin.php @@ -33,8 +33,15 @@ Author URI: http://candrews.integralblue.com/ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +// We bundle the minify library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/minify/min/lib'); + class MinifyPlugin extends Plugin { + private $minifyInlineJs = true; + private $minifyInlineCss = true; + + const cacheKey = 'minify'; /** * Add Minification related paths to the router table @@ -104,8 +111,58 @@ class MinifyPlugin extends Plugin } } + function onStartInlineScriptElement($action,&$code,&$type) + { + if($this->minifyInlineJs && $type=='text/javascript'){ + $c = common_memcache(); + if (!empty($c)) { + $cacheKey = common_cache_key(self::cacheKey . ':' . crc32($code)); + $out = $c->get($cacheKey); + } + if(empty($out)) { + $out = $this->minifyJs($code); + } + if (!empty($c)) { + $c->set($cacheKey, $out); + } + if(!empty($out)) { + $code = $out; + } + } + } + + function onStartStyleElement($action,&$code,&$type,&$media) + { + if($this->minifyInlineCss && $type=='text/css'){ + $c = common_memcache(); + if (!empty($c)) { + $cacheKey = common_cache_key(self::cacheKey . ':' . crc32($code)); + $out = $c->get($cacheKey); + } + if(empty($out)) { + $out = $this->minifyCss($code); + } + if (!empty($c)) { + $c->set($cacheKey, $out); + } + if(!empty($out)) { + $code = $out; + } + } + } + function minifyUrl($src) { return common_local_url('minify',null,array('f' => $src ,v => STATUSNET_VERSION)); } + + static function minifyJs($code) { + require_once('JSMin.php'); + return JSMin::minify($code); + } + + static function minifyCss($code, $options = array()) { + require_once('Minify/CSS.php'); + return Minify_CSS::minify($code,$options); + } } diff --git a/plugins/Minify/README b/plugins/Minify/README index 8f2eefa2c7..f7763735ed 100644 --- a/plugins/Minify/README +++ b/plugins/Minify/README @@ -4,6 +4,10 @@ Note that if enabled this plugin and use a theme server, (if any of $config['theme']['server'], $config['theme']['path'], $config['theme']['dir'] are set) theme CSS will not be minified. +This plugin will use memcache, if it is available, for storing minified inline + and file javascript and css. Because minification is non-trivial, using + memcache is recommended. + Installation ============ add "addPlugin('minify', @@ -12,7 +16,16 @@ to the bottom of your config.php Settings ======== -None at the moment +minifyInlineJs (true): Minify inline javascript. + Because caching isn'tas effective for inline resources (due to its more + dynamic nature) than static files, minifying inline resources may adversely + affect performance for higher volume sites. Testing (and memcache usage) + are highly recommended. +minifyInlineCss (true): Minify inline CSS. + Because caching isn'tas effective for inline resources (due to its more + dynamic nature) than static files, minifying inline resources may adversely + affect performance for higher volume sites. Testing (and memcache usage) + are highly recommended. Example ======= diff --git a/plugins/Minify/minify.php b/plugins/Minify/minify.php index f8c17767c3..64727f5e7e 100644 --- a/plugins/Minify/minify.php +++ b/plugins/Minify/minify.php @@ -19,9 +19,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -// We bundle the minify library... -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/minify/min/lib'); - class MinifyAction extends Action { const TYPE_CSS = 'text/css'; @@ -30,8 +27,6 @@ class MinifyAction extends Action // Apache default and what Yahoo! uses.. const TYPE_JS = 'application/x-javascript'; - const cacheKey = 'minify'; - var $file; var $v; @@ -81,7 +76,7 @@ class MinifyAction extends Action $c = common_memcache(); if (!empty($c)) { - $cacheKey = common_cache_key(self::cacheKey . ':' . $this->file . '?v=' . empty($this->v)?'':$this->v); + $cacheKey = common_cache_key(MinifyPlugin::cacheKey . ':' . $this->file . '?v=' . empty($this->v)?'':$this->v); $out = $c->get($cacheKey); } if(empty($out)) { @@ -102,16 +97,14 @@ class MinifyAction extends Action $info = pathinfo($file); switch(strtolower($info['extension'])){ case 'js': - require_once('JSMin.php'); - $out = JSMin::minify(file_get_contents($file)); + $out = MinifyPlugin::minifyJs(file_get_contents($file)); header('Content-Type: ' . self::TYPE_JS); break; case 'css': - require_once('Minify/CSS.php'); $options = array(); $options['currentDir'] = dirname($file); $options['docRoot'] = INSTALLDIR; - $out = Minify_CSS::minify(file_get_contents($file),$options); + $out = MinifyPlugin::minifyCss(file_get_contents($file),$options); header('Content-Type: ' . self::TYPE_CSS); break; default: From 51f0dd5e37db0e8d2a8690655555d399249942df Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 01:03:04 -0500 Subject: [PATCH 34/70] Add configuration option to toggle the indenting of the output HTML. Defaults to indent enabled. --- actions/twitapisearchatom.php | 2 +- config.php.sample | 5 +++++ lib/action.php | 2 +- lib/default.php | 1 + lib/error.php | 2 +- lib/htmloutputter.php | 2 +- lib/rssaction.php | 2 +- lib/xmloutputter.php | 5 ++++- plugins/Facebook/facebookaction.php | 2 +- plugins/Facebook/facebookutil.php | 2 +- 10 files changed, 17 insertions(+), 8 deletions(-) diff --git a/actions/twitapisearchatom.php b/actions/twitapisearchatom.php index 526ca2ae8b..1cb8d7efe6 100644 --- a/actions/twitapisearchatom.php +++ b/actions/twitapisearchatom.php @@ -71,7 +71,7 @@ class TwitapisearchatomAction extends ApiAction * @see Action::__construct */ - function __construct($output='php://output', $indent=true) + function __construct($output='php://output', $indent=null) { parent::__construct($output, $indent); } diff --git a/config.php.sample b/config.php.sample index 9fccb84f3b..473eb74e2c 100644 --- a/config.php.sample +++ b/config.php.sample @@ -236,6 +236,11 @@ $config['sphinx']['port'] = 3312; // Use a different hostname for SSL-encrypted pages // $config['site']['sslserver'] = 'secure.example.org'; +// Indent HTML and XML +// Enable (default) for easier to read markup for developers, +// disable to save some bandwidth. +// $config['site']['indent'] = true; + // If you have a lot of status networks on the same server, you can // store the site data in a database and switch as follows // Status_network::setupDB('localhost', 'statusnet', 'statuspass', 'statusnet'); diff --git a/lib/action.php b/lib/action.php index 8ad3917550..87d8a43993 100644 --- a/lib/action.php +++ b/lib/action.php @@ -68,7 +68,7 @@ class Action extends HTMLOutputter // lawsuit * @see XMLOutputter::__construct * @see HTMLOutputter::__construct */ - function __construct($output='php://output', $indent=true) + function __construct($output='php://output', $indent=null) { parent::__construct($output, $indent); } diff --git a/lib/default.php b/lib/default.php index d4ef045ea5..db90aeca3e 100644 --- a/lib/default.php +++ b/lib/default.php @@ -53,6 +53,7 @@ $default = 'shorturllength' => 30, 'dupelimit' => 60, # default for same person saying the same thing 'textlimit' => 140, + 'indent' => true, ), 'db' => array('database' => 'YOU HAVE TO SET THIS IN config.php', diff --git a/lib/error.php b/lib/error.php index 3162cfe656..87a4d913b4 100644 --- a/lib/error.php +++ b/lib/error.php @@ -50,7 +50,7 @@ class ErrorAction extends Action var $message = null; var $default = null; - function __construct($message, $code, $output='php://output', $indent=true) + function __construct($message, $code, $output='php://output', $indent=null) { parent::__construct($output, $indent); diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php index fd448ced5e..2091c6e2ca 100644 --- a/lib/htmloutputter.php +++ b/lib/htmloutputter.php @@ -67,7 +67,7 @@ class HTMLOutputter extends XMLOutputter * @param boolean $indent Whether to indent output, default true */ - function __construct($output='php://output', $indent=true) + function __construct($output='php://output', $indent=null) { parent::__construct($output, $indent); } diff --git a/lib/rssaction.php b/lib/rssaction.php index d591c99ed8..62e3f21b61 100644 --- a/lib/rssaction.php +++ b/lib/rssaction.php @@ -52,7 +52,7 @@ class Rss10Action extends Action * @see Action::__construct */ - function __construct($output='php://output', $indent=true) + function __construct($output='php://output', $indent=null) { parent::__construct($output, $indent); } diff --git a/lib/xmloutputter.php b/lib/xmloutputter.php index 5f06e491df..15b18e7d90 100644 --- a/lib/xmloutputter.php +++ b/lib/xmloutputter.php @@ -67,10 +67,13 @@ class XMLOutputter * @param boolean $indent Whether to indent output, default true */ - function __construct($output='php://output', $indent=true) + function __construct($output='php://output', $indent=null) { $this->xw = new XMLWriter(); $this->xw->openURI($output); + if(is_null($indent)) { + $indent = common_config('site', 'indent'); + } $this->xw->setIndent($indent); } diff --git a/plugins/Facebook/facebookaction.php b/plugins/Facebook/facebookaction.php index c852bbf5e6..b090e9bd9a 100644 --- a/plugins/Facebook/facebookaction.php +++ b/plugins/Facebook/facebookaction.php @@ -44,7 +44,7 @@ class FacebookAction extends Action var $app_uri = null; var $app_name = null; - function __construct($output='php://output', $indent=true, $facebook=null, $flink=null) + function __construct($output='php://output', $indent=null, $facebook=null, $flink=null) { parent::__construct($output, $indent); diff --git a/plugins/Facebook/facebookutil.php b/plugins/Facebook/facebookutil.php index 6f50c173ad..2abcbb14e2 100644 --- a/plugins/Facebook/facebookutil.php +++ b/plugins/Facebook/facebookutil.php @@ -168,7 +168,7 @@ function facebookBroadcastNotice($notice) function updateProfileBox($facebook, $flink, $notice) { $fbaction = new FacebookAction($output = 'php://output', - $indent = true, $facebook, $flink); + $indent = null, $facebook, $flink); $fbaction->updateProfileBox($notice); } From 2ab01e040e224943b1b15131a6e51fe6b5d6e580 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 02:11:27 -0500 Subject: [PATCH 35/70] Add 2 new events to enable logger pluginization: StartLog and EndLog --- EVENTS.txt | 11 +++++++++++ lib/util.php | 25 ++++++++++++++----------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/EVENTS.txt b/EVENTS.txt index a056aa0a1e..e0516f8f45 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -617,3 +617,14 @@ EndInlineScriptElement: After a element is written - $action - $code - $type + +StartLog: Before writing to the logs +- &$priority +- &$msg +- &$filename + +EndLog: After writing to the logs +- $priority +- $msg +- $filename + diff --git a/lib/util.php b/lib/util.php index ab046e871d..14d6665037 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1070,18 +1070,21 @@ function common_request_id() function common_log($priority, $msg, $filename=null) { - $msg = '[' . common_request_id() . '] ' . $msg; - $logfile = common_config('site', 'logfile'); - if ($logfile) { - $log = fopen($logfile, "a"); - if ($log) { - $output = common_log_line($priority, $msg); - fwrite($log, $output); - fclose($log); + if(Event::handle('StartLog', array(&$priority, &$msg, &$filename))){ + $msg = '[' . common_request_id() . '] ' . $msg; + $logfile = common_config('site', 'logfile'); + if ($logfile) { + $log = fopen($logfile, "a"); + if ($log) { + $output = common_log_line($priority, $msg); + fwrite($log, $output); + fclose($log); + } + } else { + common_ensure_syslog(); + syslog($priority, $msg); } - } else { - common_ensure_syslog(); - syslog($priority, $msg); + Event::handle('EndLog', array($priority, $msg, $filename)); } } From 9349d823ee744f4f2f7b9f36c00fc605acb728fd Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 02:13:40 -0500 Subject: [PATCH 36/70] Add FirePHP plugin - uses FirePHP as an output method for logging --- plugins/FirePHP/FirePHPPlugin.php | 59 + plugins/FirePHP/README | 21 + plugins/FirePHP/extlib/FirePHP/CHANGELOG | 110 ++ plugins/FirePHP/extlib/FirePHP/CREDITS | 12 + plugins/FirePHP/extlib/FirePHP/README | 32 + .../FirePHP/lib/FirePHPCore/FirePHP.class.php | 1529 +++++++++++++++++ .../lib/FirePHPCore/FirePHP.class.php4 | 1292 ++++++++++++++ .../extlib/FirePHP/lib/FirePHPCore/LICENSE | 29 + .../extlib/FirePHP/lib/FirePHPCore/fb.php | 261 +++ .../extlib/FirePHP/lib/FirePHPCore/fb.php4 | 251 +++ 10 files changed, 3596 insertions(+) create mode 100644 plugins/FirePHP/FirePHPPlugin.php create mode 100644 plugins/FirePHP/README create mode 100644 plugins/FirePHP/extlib/FirePHP/CHANGELOG create mode 100644 plugins/FirePHP/extlib/FirePHP/CREDITS create mode 100644 plugins/FirePHP/extlib/FirePHP/README create mode 100644 plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php create mode 100644 plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php4 create mode 100644 plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/LICENSE create mode 100644 plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php create mode 100644 plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php4 diff --git a/plugins/FirePHP/FirePHPPlugin.php b/plugins/FirePHP/FirePHPPlugin.php new file mode 100644 index 0000000000..37b397796e --- /dev/null +++ b/plugins/FirePHP/FirePHPPlugin.php @@ -0,0 +1,59 @@ + +Author URI: http://candrews.integralblue.com/ +*/ + +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/** + * @package MinifyPlugin + * @maintainer Craig Andrews + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +// We bundle the FirePHP library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/FirePHP/lib'); + +class FirePHPPlugin extends Plugin +{ + private $firephp; + + function onInitializePlugin() + { + //Output buffering has to be enabled so FirePHP can send the HTTP headers it needs + ob_start(); + require_once('FirePHPCore/FirePHP.class.php'); + $this->firephp = FirePHP::getInstance(true); + } + + function onStartLog(&$priority, &$msg, &$filename) + { + static $firephp_priorities = array(FirePHP::ERROR, FirePHP::ERROR, FirePHP::ERROR, FirePHP::ERROR, + FirePHP::WARN, FirePHP::LOG, FirePHP::LOG, FirePHP::INFO); + $priority = $firephp_priorities[$priority]; + $this->firephp->fb($msg, $priority); + } +} + diff --git a/plugins/FirePHP/README b/plugins/FirePHP/README new file mode 100644 index 0000000000..ee22794d51 --- /dev/null +++ b/plugins/FirePHP/README @@ -0,0 +1,21 @@ +The FirePHP writes StatusNet's log output to FirePHP. + +Using FirePHP on production sites can expose sensitive information. + You must protect the security of your application by disabling FirePHP + logging on your live site. + +Installation +============ +add "addPlugin('FirePHP', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +Settings +======== +None at the moment. + +Example +======= + +addPlugin('FirePHP', array()); + diff --git a/plugins/FirePHP/extlib/FirePHP/CHANGELOG b/plugins/FirePHP/extlib/FirePHP/CHANGELOG new file mode 100644 index 0000000000..6191980795 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/CHANGELOG @@ -0,0 +1,110 @@ + +2008-06-14 - Release Version: 0.3.1 + + - (Issue 108) ignore class name case in object filter + +2009-05-11 - Release Version: 0.3 +2009-05-01 - Release Version: 0.3.rc.1 + + - (Issue 90) PHP4 compatible version of FirePHPCore + - (Issue 98) Thrown exceptions don't send an HTTP 500 if the FirePHP exception handler is enabled + - (Issue 85) Support associative arrays in encodeTable method in FirePHP.class.php + - (Issue 66) Add a new getOptions() public method in API + - (Issue 82) Define $this->options outside of __construct + - (Issue 72) Message error if group name is null + - (Issue 68) registerErrorHandler() and registerExceptionHandler() should returns previous handlers defined + - (Issue 69) Add the missing register handler in the triumvirate (error, exception, assert) + - (Issue 75) [Error & Exception Handling] Option to not exit script execution + - (Issue 83) Exception handler can't throw exceptions + - (Issue 80) Auto/Pre collapsing groups AND Custom group row colors + +2008-11-09 - Release Version: 0.2.1 + + - (Issue 70) Problem when logging resources + +2008-10-21 - Release Version: 0.2.0 + + - Updated version to 0.2.0 + - Switched to using __sleep instead of __wakeup + - Added support to exclude object members when encoding + - Add support to enable/disable logging + +2008-10-17 - Release Version: 0.2.b.8 + + - New implementation for is_utf8() + - (Issue 55) maxObjectDepth Option not working correctly when using TABLE and EXCEPTION Type + - Bugfix for max[Object|Array]Depth when encoding nested array/object graphs + - Bugfix for FB::setOptions() + +2008-10-16 - Release Version: 0.2.b.7 + + - (Issue 45) Truncate dump when string have non utf8 cars + - (Issue 52) logging will not work when firephp object gets stored in the session. + +2008-10-16 - Release Version: 0.2.b.6 + + - (Issue 37) Display file and line information for each log message + - (Issue 51) Limit output of object graphs + - Bugfix for encoding object members set to NULL|false|'' + +2008-10-14 - Release Version: 0.2.b.5 + + - Updated JsonStream wildfire protocol to be more robust + - (Issue 33) PHP error notices running demos + - (Issue 48) Warning: ReflectionProperty::getValue() expects exactly 1 parameter, 0 given + +2008-10-08 - Release Version: 0.2.b.4 + + - Bugfix for logging objects with recursion + +2008-10-08 - Release Version: 0.2.b.3 + + - (Issue 43) Notice message in 0.2b2 + - Added support for PHP's native json_encode() if available + - Revised object encoder to detect object recursion + +2008-10-07 - Release Version: 0.2.b.2 + + - (Issue 28) Need solution for logging private and protected object variables + - Added trace() and table() aliases in FirePHP class + - (Issue 41) Use PHP doc in FirePHP + - (Issue 39) Static logging method for object oriented API + +2008-10-01 - Release Version: 0.2.b.1 + + - Added support for error and exception handling + - Updated min PHP version for PEAR package to 5.2 + - Added version constant for library + - Gave server library it's own wildfire plugin namespace + - Migrated communication protocol to Wildfire JsonStream + - Added support for console groups using "group" and "groupEnd" + - Added support for log, info, warn and error logging aliases + - (Issue 29) problem with TRACE when using with error_handler + - (Issue 33) PHP error notices running demos + - (Issue 12) undefined index php notice + - Removed closing ?> php tags + - (Issue 13) the code in the fb() function has a second return statement that will never be reached + +2008-07-30 - Release Version: 0.1.1.3 + + - Include __className property in JSON string if variable was an object + - Bugfix - Mis-spelt "Exception" in JSON encoding code + +2008-06-13 - Release Version: 0.1.1.1 + + - Bugfix - Standardize windows paths in stack traces + - Bugfix - Display correct stack trace info in windows environments + - Bugfix - Check $_SERVER['HTTP_USER_AGENT'] before returning + +2008-06-13 - Release Version: 0.1.1 + + - Added support for FirePHP::TRACE log style + - Changed license to New BSD License + +2008-06-06 - Release Version: 0.0.2 + + - Bugfix - Added usleep() to header writing loop to ensure unique index + - Bugfix - Ensure chunk_split does not generate trailing "\n" with empty data header + - Added support for FirePHP::TABLE log style + + \ No newline at end of file diff --git a/plugins/FirePHP/extlib/FirePHP/CREDITS b/plugins/FirePHP/extlib/FirePHP/CREDITS new file mode 100644 index 0000000000..5f0d463d16 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/CREDITS @@ -0,0 +1,12 @@ + _______________________________ + F i r e P H P C o r e + + Current Development + ------------------- + + Christoph Dorn + Michael Day + + If you've done work on FirePHPCore and you are not listed here, + please feel free to add yourself. + diff --git a/plugins/FirePHP/extlib/FirePHP/README b/plugins/FirePHP/extlib/FirePHP/README new file mode 100644 index 0000000000..033719fae2 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/README @@ -0,0 +1,32 @@ + +Version: 0.3.1 + +------------------------------------------------------ + Requirements +------------------------------------------------------ + +Client Side: + + - Firefox - http://www.getfirefox.com/ + - Firebug - http://www.getfirebug.com/ + - FirePHP - http://www.firephp.org/ + +Server Side: + + - PHP 5 (complete functionality) + - PHP 4 (most functionality) + + +------------------------------------------------------ + Install Tutorial +------------------------------------------------------ + + http://www.firephp.org/HQ/Install.htm + + +------------------------------------------------------ + Support +------------------------------------------------------ + + http://forum.firephp.org/ + diff --git a/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php new file mode 100644 index 0000000000..d8ae13f349 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php @@ -0,0 +1,1529 @@ + + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ + + +/** + * Sends the given data to the FirePHP Firefox Extension. + * The data can be displayed in the Firebug Console or in the + * "Server" request tab. + * + * For more information see: http://www.firephp.org/ + * + * @copyright Copyright (C) 2007-2009 Christoph Dorn + * @author Christoph Dorn + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ +class FirePHP { + + /** + * FirePHP version + * + * @var string + */ + const VERSION = '0.3'; + + /** + * Firebug LOG level + * + * Logs a message to firebug console. + * + * @var string + */ + const LOG = 'LOG'; + + /** + * Firebug INFO level + * + * Logs a message to firebug console and displays an info icon before the message. + * + * @var string + */ + const INFO = 'INFO'; + + /** + * Firebug WARN level + * + * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise. + * + * @var string + */ + const WARN = 'WARN'; + + /** + * Firebug ERROR level + * + * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. + * + * @var string + */ + const ERROR = 'ERROR'; + + /** + * Dumps a variable to firebug's server panel + * + * @var string + */ + const DUMP = 'DUMP'; + + /** + * Displays a stack trace in firebug console + * + * @var string + */ + const TRACE = 'TRACE'; + + /** + * Displays an exception in firebug console + * + * Increments the firebug error count. + * + * @var string + */ + const EXCEPTION = 'EXCEPTION'; + + /** + * Displays an table in firebug console + * + * @var string + */ + const TABLE = 'TABLE'; + + /** + * Starts a group in firebug console + * + * @var string + */ + const GROUP_START = 'GROUP_START'; + + /** + * Ends a group in firebug console + * + * @var string + */ + const GROUP_END = 'GROUP_END'; + + /** + * Singleton instance of FirePHP + * + * @var FirePHP + */ + protected static $instance = null; + + /** + * Flag whether we are logging from within the exception handler + * + * @var boolean + */ + protected $inExceptionHandler = false; + + /** + * Flag whether to throw PHP errors that have been converted to ErrorExceptions + * + * @var boolean + */ + protected $throwErrorExceptions = true; + + /** + * Flag whether to convert PHP assertion errors to Exceptions + * + * @var boolean + */ + protected $convertAssertionErrorsToExceptions = true; + + /** + * Flag whether to throw PHP assertion errors that have been converted to Exceptions + * + * @var boolean + */ + protected $throwAssertionExceptions = false; + + /** + * Wildfire protocol message index + * + * @var int + */ + protected $messageIndex = 1; + + /** + * Options for the library + * + * @var array + */ + protected $options = array('maxObjectDepth' => 10, + 'maxArrayDepth' => 20, + 'useNativeJsonEncode' => true, + 'includeLineNumbers' => true); + + /** + * Filters used to exclude object members when encoding + * + * @var array + */ + protected $objectFilters = array(); + + /** + * A stack of objects used to detect recursion during object encoding + * + * @var object + */ + protected $objectStack = array(); + + /** + * Flag to enable/disable logging + * + * @var boolean + */ + protected $enabled = true; + + /** + * The object constructor + */ + function __construct() { + } + + /** + * When the object gets serialized only include specific object members. + * + * @return array + */ + public function __sleep() { + return array('options','objectFilters','enabled'); + } + + /** + * Gets singleton instance of FirePHP + * + * @param boolean $AutoCreate + * @return FirePHP + */ + public static function getInstance($AutoCreate=false) { + if($AutoCreate===true && !self::$instance) { + self::init(); + } + return self::$instance; + } + + /** + * Creates FirePHP object and stores it for singleton access + * + * @return FirePHP + */ + public static function init() { + return self::$instance = new self(); + } + + /** + * Enable and disable logging to Firebug + * + * @param boolean $Enabled TRUE to enable, FALSE to disable + * @return void + */ + public function setEnabled($Enabled) { + $this->enabled = $Enabled; + } + + /** + * Check if logging is enabled + * + * @return boolean TRUE if enabled + */ + public function getEnabled() { + return $this->enabled; + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @param string $Class The class name of the object + * @param array $Filter An array of members to exclude + * @return void + */ + public function setObjectFilter($Class, $Filter) { + $this->objectFilters[strtolower($Class)] = $Filter; + } + + /** + * Set some options for the library + * + * Options: + * - maxObjectDepth: The maximum depth to traverse objects (default: 10) + * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) + * - useNativeJsonEncode: If true will use json_encode() (default: true) + * - includeLineNumbers: If true will include line numbers and filenames (default: true) + * + * @param array $Options The options to be set + * @return void + */ + public function setOptions($Options) { + $this->options = array_merge($this->options,$Options); + } + + /** + * Get options from the library + * + * @return array The currently set options + */ + public function getOptions() { + return $this->options; + } + + /** + * Register FirePHP as your error handler + * + * Will throw exceptions for each php error. + * + * @return mixed Returns a string containing the previously defined error handler (if any) + */ + public function registerErrorHandler($throwErrorExceptions=true) + { + //NOTE: The following errors will not be caught by this error handler: + // E_ERROR, E_PARSE, E_CORE_ERROR, + // E_CORE_WARNING, E_COMPILE_ERROR, + // E_COMPILE_WARNING, E_STRICT + + $this->throwErrorExceptions = $throwErrorExceptions; + + return set_error_handler(array($this,'errorHandler')); + } + + /** + * FirePHP's error handler + * + * Throws exception for each php error that will occur. + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + */ + public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) + { + // Don't throw exception if error reporting is switched off + if (error_reporting() == 0) { + return; + } + // Only throw exceptions for errors we are asking for + if (error_reporting() & $errno) { + + $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline); + if($this->throwErrorExceptions) { + throw $exception; + } else { + $this->fb($exception); + } + } + } + + /** + * Register FirePHP as your exception handler + * + * @return mixed Returns the name of the previously defined exception handler, + * or NULL on error. + * If no previous handler was defined, NULL is also returned. + */ + public function registerExceptionHandler() + { + return set_exception_handler(array($this,'exceptionHandler')); + } + + /** + * FirePHP's exception handler + * + * Logs all exceptions to your firebug console and then stops the script. + * + * @param Exception $Exception + * @throws Exception + */ + function exceptionHandler($Exception) { + + $this->inExceptionHandler = true; + + header('HTTP/1.1 500 Internal Server Error'); + + $this->fb($Exception); + + $this->inExceptionHandler = false; + } + + /** + * Register FirePHP driver as your assert callback + * + * @param boolean $convertAssertionErrorsToExceptions + * @param boolean $throwAssertionExceptions + * @return mixed Returns the original setting or FALSE on errors + */ + public function registerAssertionHandler($convertAssertionErrorsToExceptions=true, $throwAssertionExceptions=false) + { + $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions; + $this->throwAssertionExceptions = $throwAssertionExceptions; + + if($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) { + throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!'); + } + + return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler')); + } + + /** + * FirePHP's assertion handler + * + * Logs all assertions to your firebug console and then stops the script. + * + * @param string $file File source of assertion + * @param int $line Line source of assertion + * @param mixed $code Assertion code + */ + public function assertionHandler($file, $line, $code) + { + + if($this->convertAssertionErrorsToExceptions) { + + $exception = new ErrorException('Assertion Failed - Code[ '.$code.' ]', 0, null, $file, $line); + + if($this->throwAssertionExceptions) { + throw $exception; + } else { + $this->fb($exception); + } + + } else { + + $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File'=>$file,'Line'=>$line)); + + } + } + + /** + * Set custom processor url for FirePHP + * + * @param string $URL + */ + public function setProcessorUrl($URL) + { + $this->setHeader('X-FirePHP-ProcessorURL', $URL); + } + + /** + * Set custom renderer url for FirePHP + * + * @param string $URL + */ + public function setRendererUrl($URL) + { + $this->setHeader('X-FirePHP-RendererURL', $URL); + } + + /** + * Start a group for following messages. + * + * Options: + * Collapsed: [true|false] + * Color: [#RRGGBB|ColorName] + * + * @param string $Name + * @param array $Options OPTIONAL Instructions on how to log the group + * @return true + * @throws Exception + */ + public function group($Name, $Options=null) { + + if(!$Name) { + throw $this->newException('You must specify a label for the group!'); + } + + if($Options) { + if(!is_array($Options)) { + throw $this->newException('Options must be defined as an array!'); + } + if(array_key_exists('Collapsed', $Options)) { + $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false'; + } + } + + return $this->fb(null, $Name, FirePHP::GROUP_START, $Options); + } + + /** + * Ends a group you have started before + * + * @return true + * @throws Exception + */ + public function groupEnd() { + return $this->fb(null, null, FirePHP::GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function log($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::LOG); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function info($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::INFO); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function warn($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::WARN); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public function error($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP::ERROR); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $Key + * @param mixed $Variable + * @return true + * @throws Exception + */ + public function dump($Key, $Variable) { + return $this->fb($Variable, $Key, FirePHP::DUMP); + } + + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $Label + * @return true + * @throws Exception + */ + public function trace($Label) { + return $this->fb($Label, FirePHP::TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $Label + * @param string $Table + * @return true + * @throws Exception + */ + public function table($Label, $Table) { + return $this->fb($Table, $Label, FirePHP::TABLE); + } + + /** + * Check if FirePHP is installed on client + * + * @return boolean + */ + public function detectClientExtension() { + /* Check if FirePHP is installed on client */ + if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || + !version_compare($m[1][0],'0.0.6','>=')) { + return false; + } + return true; + } + + /** + * Log varible to Firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object The variable to be logged + * @return true Return TRUE if message was added to headers, FALSE otherwise + * @throws Exception + */ + public function fb($Object) { + + if(!$this->enabled) { + return false; + } + + if (headers_sent($filename, $linenum)) { + // If we are logging from within the exception handler we cannot throw another exception + if($this->inExceptionHandler) { + // Simply echo the error out to the page + echo '
    FirePHP ERROR: Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.
    '; + } else { + throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); + } + } + + $Type = null; + $Label = null; + $Options = array(); + + if(func_num_args()==1) { + } else + if(func_num_args()==2) { + switch(func_get_arg(1)) { + case self::LOG: + case self::INFO: + case self::WARN: + case self::ERROR: + case self::DUMP: + case self::TRACE: + case self::EXCEPTION: + case self::TABLE: + case self::GROUP_START: + case self::GROUP_END: + $Type = func_get_arg(1); + break; + default: + $Label = func_get_arg(1); + break; + } + } else + if(func_num_args()==3) { + $Type = func_get_arg(2); + $Label = func_get_arg(1); + } else + if(func_num_args()==4) { + $Type = func_get_arg(2); + $Label = func_get_arg(1); + $Options = func_get_arg(3); + } else { + throw $this->newException('Wrong number of arguments to fb() function!'); + } + + + if(!$this->detectClientExtension()) { + return false; + } + + $meta = array(); + $skipFinalObjectEncode = false; + + if($Object instanceof Exception) { + + $meta['file'] = $this->_escapeTraceFile($Object->getFile()); + $meta['line'] = $Object->getLine(); + + $trace = $Object->getTrace(); + if($Object instanceof ErrorException + && isset($trace[0]['function']) + && $trace[0]['function']=='errorHandler' + && isset($trace[0]['class']) + && $trace[0]['class']=='FirePHP') { + + $severity = false; + switch($Object->getSeverity()) { + case E_WARNING: $severity = 'E_WARNING'; break; + case E_NOTICE: $severity = 'E_NOTICE'; break; + case E_USER_ERROR: $severity = 'E_USER_ERROR'; break; + case E_USER_WARNING: $severity = 'E_USER_WARNING'; break; + case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break; + case E_STRICT: $severity = 'E_STRICT'; break; + case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break; + case E_DEPRECATED: $severity = 'E_DEPRECATED'; break; + case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break; + } + + $Object = array('Class'=>get_class($Object), + 'Message'=>$severity.': '.$Object->getMessage(), + 'File'=>$this->_escapeTraceFile($Object->getFile()), + 'Line'=>$Object->getLine(), + 'Type'=>'trigger', + 'Trace'=>$this->_escapeTrace(array_splice($trace,2))); + $skipFinalObjectEncode = true; + } else { + $Object = array('Class'=>get_class($Object), + 'Message'=>$Object->getMessage(), + 'File'=>$this->_escapeTraceFile($Object->getFile()), + 'Line'=>$Object->getLine(), + 'Type'=>'throw', + 'Trace'=>$this->_escapeTrace($trace)); + $skipFinalObjectEncode = true; + } + $Type = self::EXCEPTION; + + } else + if($Type==self::TRACE) { + + $trace = debug_backtrace(); + if(!$trace) return false; + for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if($trace[$i]['function']=='fb' + || $trace[$i]['function']=='trace' + || $trace[$i]['function']=='send') { + $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', + 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', + 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', + 'Message'=>$trace[$i]['args'][0], + 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', + 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', + 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', + 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); + + $skipFinalObjectEncode = true; + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } else + if($Type==self::TABLE) { + + if(isset($Object[0]) && is_string($Object[0])) { + $Object[1] = $this->encodeTable($Object[1]); + } else { + $Object = $this->encodeTable($Object); + } + + $skipFinalObjectEncode = true; + + } else + if($Type==self::GROUP_START) { + + if(!$Label) { + throw $this->newException('You must specify a label for the group!'); + } + + } else { + if($Type===null) { + $Type = self::LOG; + } + } + + if($this->options['includeLineNumbers']) { + if(!isset($meta['file']) || !isset($meta['line'])) { + + $trace = debug_backtrace(); + for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if(isset($trace[$i]['file']) + && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip FB::fb() */ + } else { + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } + } else { + unset($meta['file']); + unset($meta['line']); + } + + $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); + $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION); + + $structure_index = 1; + if($Type==self::DUMP) { + $structure_index = 2; + $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); + } else { + $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); + } + + if($Type==self::DUMP) { + $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; + } else { + $msg_meta = $Options; + $msg_meta['Type'] = $Type; + if($Label!==null) { + $msg_meta['Label'] = $Label; + } + if(isset($meta['file']) && !isset($msg_meta['File'])) { + $msg_meta['File'] = $meta['file']; + } + if(isset($meta['line']) && !isset($msg_meta['Line'])) { + $msg_meta['Line'] = $meta['line']; + } + $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; + } + + $parts = explode("\n",chunk_split($msg, 5000, "\n")); + + for( $i=0 ; $i2) { + // Message needs to be split into multiple parts + $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + (($i==0)?strlen($msg):'') + . '|' . $part . '|' + . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + strlen($part) . '|' . $part . '|'); + } + + $this->messageIndex++; + + if ($this->messageIndex > 99999) { + throw $this->newException('Maximum number (99,999) of messages reached!'); + } + } + } + + $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); + + return true; + } + + /** + * Standardizes path for windows systems. + * + * @param string $Path + * @return string + */ + protected function _standardizePath($Path) { + return preg_replace('/\\\\+/','/',$Path); + } + + /** + * Escape trace path for windows systems + * + * @param array $Trace + * @return array + */ + protected function _escapeTrace($Trace) { + if(!$Trace) return $Trace; + for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); + } + if(isset($Trace[$i]['args'])) { + $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); + } + } + return $Trace; + } + + /** + * Escape file information of trace for windows systems + * + * @param string $File + * @return string + */ + protected function _escapeTraceFile($File) { + /* Check if we have a windows filepath */ + if(strpos($File,'\\')) { + /* First strip down to single \ */ + + $file = preg_replace('/\\\\+/','\\',$File); + + return $file; + } + return $File; + } + + /** + * Send header + * + * @param string $Name + * @param string_type $Value + */ + protected function setHeader($Name, $Value) { + return header($Name.': '.$Value); + } + + /** + * Get user agent + * + * @return string|false + */ + protected function getUserAgent() { + if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; + return $_SERVER['HTTP_USER_AGENT']; + } + + /** + * Returns a new exception + * + * @param string $Message + * @return Exception + */ + protected function newException($Message) { + return new Exception($Message); + } + + /** + * Encode an object into a JSON string + * + * Uses PHP's jeson_encode() if available + * + * @param object $Object The object to be encoded + * @return string The JSON string + */ + public function jsonEncode($Object, $skipObjectEncode=false) + { + if(!$skipObjectEncode) { + $Object = $this->encodeObject($Object); + } + + if(function_exists('json_encode') + && $this->options['useNativeJsonEncode']!=false) { + + return json_encode($Object); + } else { + return $this->json_encode($Object); + } + } + + /** + * Encodes a table by encoding each row and column with encodeObject() + * + * @param array $Table The table to be encoded + * @return array + */ + protected function encodeTable($Table) { + + if(!$Table) return $Table; + + $new_table = array(); + foreach($Table as $row) { + + if(is_array($row)) { + $new_row = array(); + + foreach($row as $item) { + $new_row[] = $this->encodeObject($item); + } + + $new_table[] = $new_row; + } + } + + return $new_table; + } + + /** + * Encodes an object including members with + * protected and private visibility + * + * @param Object $Object The object to be encoded + * @param int $Depth The current traversal depth + * @return array All members of the object + */ + protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) + { + $return = array(); + + if (is_resource($Object)) { + + return '** '.(string)$Object.' **'; + + } else + if (is_object($Object)) { + + if ($ObjectDepth > $this->options['maxObjectDepth']) { + return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; + } + + foreach ($this->objectStack as $refVal) { + if ($refVal === $Object) { + return '** Recursion ('.get_class($Object).') **'; + } + } + array_push($this->objectStack, $Object); + + $return['__className'] = $class = get_class($Object); + $class_lower = strtolower($class); + + $reflectionClass = new ReflectionClass($class); + $properties = array(); + foreach( $reflectionClass->getProperties() as $property) { + $properties[$property->getName()] = $property; + } + + $members = (array)$Object; + + foreach( $properties as $raw_name => $property ) { + + $name = $raw_name; + if($property->isStatic()) { + $name = 'static:'.$name; + } + if($property->isPublic()) { + $name = 'public:'.$name; + } else + if($property->isPrivate()) { + $name = 'private:'.$name; + $raw_name = "\0".$class."\0".$raw_name; + } else + if($property->isProtected()) { + $name = 'protected:'.$name; + $raw_name = "\0".'*'."\0".$raw_name; + } + + if(!(isset($this->objectFilters[$class_lower]) + && is_array($this->objectFilters[$class_lower]) + && in_array($raw_name,$this->objectFilters[$class_lower]))) { + + if(array_key_exists($raw_name,$members) + && !$property->isStatic()) { + + $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1); + + } else { + if(method_exists($property,'setAccessible')) { + $property->setAccessible(true); + $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); + } else + if($property->isPublic()) { + $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); + } else { + $return[$name] = '** Need PHP 5.3 to get value **'; + } + } + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + + // Include all members that are not defined in the class + // but exist in the object + foreach( $members as $raw_name => $value ) { + + $name = $raw_name; + + if ($name{0} == "\0") { + $parts = explode("\0", $name); + $name = $parts[2]; + } + + if(!isset($properties[$name])) { + $name = 'undeclared:'.$name; + + if(!(isset($this->objectFilters[$class_lower]) + && is_array($this->objectFilters[$class_lower]) + && in_array($raw_name,$this->objectFilters[$class_lower]))) { + + $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + } + + array_pop($this->objectStack); + + } elseif (is_array($Object)) { + + if ($ArrayDepth > $this->options['maxArrayDepth']) { + return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; + } + + foreach ($Object as $key => $val) { + + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($key=='GLOBALS' + && is_array($val) + && array_key_exists('GLOBALS',$val)) { + $val['GLOBALS'] = '** Recursion (GLOBALS) **'; + } + + $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); + } + } else { + if(self::is_utf8($Object)) { + return $Object; + } else { + return utf8_encode($Object); + } + } + return $return; + } + + /** + * Returns true if $string is valid UTF-8 and false otherwise. + * + * @param mixed $str String to be tested + * @return boolean + */ + protected static function is_utf8($str) { + $c=0; $b=0; + $bits=0; + $len=strlen($str); + for($i=0; $i<$len; $i++){ + $c=ord($str[$i]); + if($c > 128){ + if(($c >= 254)) return false; + elseif($c >= 252) $bits=6; + elseif($c >= 248) $bits=5; + elseif($c >= 240) $bits=4; + elseif($c >= 224) $bits=3; + elseif($c >= 192) $bits=2; + else return false; + if(($i+$bits) > $len) return false; + while($bits > 1){ + $i++; + $b=ord($str[$i]); + if($b < 128 || $b > 191) return false; + $bits--; + } + } + } + return true; + } + + /** + * Converts to and from JSON format. + * + * JSON (JavaScript Object Notation) is a lightweight data-interchange + * format. It is easy for humans to read and write. It is easy for machines + * to parse and generate. It is based on a subset of the JavaScript + * Programming Language, Standard ECMA-262 3rd Edition - December 1999. + * This feature can also be found in Python. JSON is a text format that is + * completely language independent but uses conventions that are familiar + * to programmers of the C-family of languages, including C, C++, C#, Java, + * JavaScript, Perl, TCL, and many others. These properties make JSON an + * ideal data-interchange language. + * + * This package provides a simple encoder and decoder for JSON notation. It + * is intended for use with client-side Javascript applications that make + * use of HTTPRequest to perform server communication functions - data can + * be encoded into JSON notation for use in a client-side javascript, or + * decoded from incoming Javascript requests. JSON format is native to + * Javascript, and can be directly eval()'ed with no further parsing + * overhead + * + * All strings should be in ASCII or UTF-8 format! + * + * LICENSE: 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. + * + * THIS SOFTWARE IS PROVIDED ``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 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 + * @package Services_JSON + * @author Michal Migurski + * @author Matt Knapp + * @author Brett Stimmerman + * @author Christoph Dorn + * @copyright 2005 Michal Migurski + * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + + + /** + * Keep a list of objects as we descend into the array so we can detect recursion. + */ + private $json_objectStack = array(); + + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + private function json_utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) { + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + } + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return mixed JSON string representation of input var or an error if a problem occurs + * @access public + */ + private function json_encode($var) + { + + if(is_object($var)) { + if(in_array($var,$this->json_objectStack)) { + return '"** Recursion **"'; + } + } + + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($var), + array_values($var)); + + array_pop($this->json_objectStack); + + foreach($properties as $property) { + if($property instanceof Exception) { + return $property; + } + } + + return '{' . join(',', $properties) . '}'; + } + + $this->json_objectStack[] = $var; + + // treat it like a regular array + $elements = array_map(array($this, 'json_encode'), $var); + + array_pop($this->json_objectStack); + + foreach($elements as $element) { + if($element instanceof Exception) { + return $element; + } + } + + return '[' . join(',', $elements) . ']'; + + case 'object': + $vars = self::encodeObject($var); + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($vars), + array_values($vars)); + + array_pop($this->json_objectStack); + + foreach($properties as $property) { + if($property instanceof Exception) { + return $property; + } + } + + return '{' . join(',', $properties) . '}'; + + default: + return null; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + private function json_name_value($name, $value) + { + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($name=='GLOBALS' + && is_array($value) + && array_key_exists('GLOBALS',$value)) { + $value['GLOBALS'] = '** Recursion **'; + } + + $encoded_value = $this->json_encode($value); + + if($encoded_value instanceof Exception) { + return $encoded_value; + } + + return $this->json_encode(strval($name)) . ':' . $encoded_value; + } +} diff --git a/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php4 b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php4 new file mode 100644 index 0000000000..7cc4bfb04e --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/FirePHP.class.php4 @@ -0,0 +1,1292 @@ + + * @author Michael Day + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ + +/** + * FirePHP version + * + * @var string + */ +define('FirePHP_VERSION', '0.3'); + +/** + * Firebug LOG level + * + * Logs a message to firebug console + * + * @var string + */ +define('FirePHP_LOG', 'LOG'); + +/** + * Firebug INFO level + * + * Logs a message to firebug console and displays an info icon before the message + * + * @var string + */ +define('FirePHP_INFO', 'INFO'); + +/** + * Firebug WARN level + * + * Logs a message to firebug console, displays a warning icon before the message and colors the line turquoise + * + * @var string + */ +define('FirePHP_WARN', 'WARN'); + +/** + * Firebug ERROR level + * + * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. + * + * @var string + */ +define('FirePHP_ERROR', 'ERROR'); + +/** + * Dumps a variable to firebug's server panel + * + * @var string + */ +define('FirePHP_DUMP', 'DUMP'); + +/** + * Displays a stack trace in firebug console + * + * @var string + */ +define('FirePHP_TRACE', 'TRACE'); + +/** + * Displays a table in firebug console + * + * @var string + */ +define('FirePHP_TABLE', 'TABLE'); + +/** + * Starts a group in firebug console + * + * @var string + */ +define('FirePHP_GROUP_START', 'GROUP_START'); + +/** + * Ends a group in firebug console + * + * @var string + */ +define('FirePHP_GROUP_END', 'GROUP_END'); + +/** + * Sends the given data to the FirePHP Firefox Extension. + * The data can be displayed in the Firebug Console or in the + * "Server" request tab. + * + * For more information see: http://www.firephp.org/ + * + * @copyright Copyright (C) 2007-2009 Christoph Dorn + * @author Christoph Dorn + * @author Michael Day + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ +class FirePHP { + /** + * Wildfire protocol message index + * + * @var int + */ + var $messageIndex = 1; + + /** + * Options for the library + * + * @var array + */ + var $options = array('maxObjectDepth' => 10, + 'maxArrayDepth' => 20, + 'useNativeJsonEncode' => true, + 'includeLineNumbers' => true); + + /** + * Filters used to exclude object members when encoding + * + * @var array + */ + var $objectFilters = array(); + + /** + * A stack of objects used to detect recursion during object encoding + * + * @var object + */ + var $objectStack = array(); + + /** + * Flag to enable/disable logging + * + * @var boolean + */ + var $enabled = true; + + /** + * The object constructor + */ + function FirePHP() { + } + + + /** + * When the object gets serialized only include specific object members. + * + * @return array + */ + function __sleep() { + return array('options','objectFilters','enabled'); + } + + /** + * Gets singleton instance of FirePHP + * + * @param boolean $AutoCreate + * @return FirePHP + */ + function &getInstance($AutoCreate=false) { + global $FirePHP_Instance; + + if($AutoCreate===true && !$FirePHP_Instance) { + $FirePHP_Instance = new FirePHP(); + } + + return $FirePHP_Instance; + } + + /** + * Enable and disable logging to Firebug + * + * @param boolean $Enabled TRUE to enable, FALSE to disable + * @return void + */ + function setEnabled($Enabled) { + $this->enabled = $Enabled; + } + + /** + * Check if logging is enabled + * + * @return boolean TRUE if enabled + */ + function getEnabled() { + return $this->enabled; + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @param string $Class The class name of the object + * @param array $Filter An array of members to exclude + * @return void + */ + function setObjectFilter($Class, $Filter) { + $this->objectFilters[strtolower($Class)] = $Filter; + } + + /** + * Set some options for the library + * + * Options: + * - maxObjectDepth: The maximum depth to traverse objects (default: 10) + * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) + * - useNativeJsonEncode: If true will use json_encode() (default: true) + * - includeLineNumbers: If true will include line numbers and filenames (default: true) + * + * @param array $Options The options to be set + * @return void + */ + function setOptions($Options) { + $this->options = array_merge($this->options,$Options); + } + + /** + * Get options from the library + * + * @return array The currently set options + */ + function getOptions() { + return $this->options; + } + + /** + * Register FirePHP as your error handler + * + * Will use FirePHP to log each php error. + * + * @return mixed Returns a string containing the previously defined error handler (if any) + */ + function registerErrorHandler() + { + //NOTE: The following errors will not be caught by this error handler: + // E_ERROR, E_PARSE, E_CORE_ERROR, + // E_CORE_WARNING, E_COMPILE_ERROR, + // E_COMPILE_WARNING, E_STRICT + + return set_error_handler(array($this,'errorHandler')); + } + + /** + * FirePHP's error handler + * + * Logs each php error that will occur. + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + */ + function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) + { + global $FirePHP_Instance; + // Don't log error if error reporting is switched off + if (error_reporting() == 0) { + return; + } + // Only log error for errors we are asking for + if (error_reporting() & $errno) { + $FirePHP_Instance->group($errstr); + $FirePHP_Instance->error("{$errfile}, line $errline"); + $FirePHP_Instance->groupEnd(); + } + } + + /** + * Register FirePHP driver as your assert callback + * + * @return mixed Returns the original setting + */ + function registerAssertionHandler() + { + return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler')); + } + + /** + * FirePHP's assertion handler + * + * Logs all assertions to your firebug console and then stops the script. + * + * @param string $file File source of assertion + * @param int $line Line source of assertion + * @param mixed $code Assertion code + */ + function assertionHandler($file, $line, $code) + { + $this->fb($code, 'Assertion Failed', FirePHP_ERROR, array('File'=>$file,'Line'=>$line)); + } + + /** + * Set custom processor url for FirePHP + * + * @param string $URL + */ + function setProcessorUrl($URL) + { + $this->setHeader('X-FirePHP-ProcessorURL', $URL); + } + + /** + * Set custom renderer url for FirePHP + * + * @param string $URL + */ + function setRendererUrl($URL) + { + $this->setHeader('X-FirePHP-RendererURL', $URL); + } + + /** + * Start a group for following messages. + * + * Options: + * Collapsed: [true|false] + * Color: [#RRGGBB|ColorName] + * + * @param string $Name + * @param array $Options OPTIONAL Instructions on how to log the group + * @return true + * @throws Exception + */ + function group($Name, $Options=null) { + + if(!$Name) { + trigger_error('You must specify a label for the group!'); + } + + if($Options) { + if(!is_array($Options)) { + trigger_error('Options must be defined as an array!'); + } + if(array_key_exists('Collapsed', $Options)) { + $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false'; + } + } + + return $this->fb(null, $Name, FirePHP_GROUP_START, $Options); + } + + /** + * Ends a group you have started before + * + * @return true + * @throws Exception + */ + function groupEnd() { + return $this->fb(null, null, FirePHP_GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + function log($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP_LOG); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + function info($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP_INFO); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + function warn($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP_WARN); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + function error($Object, $Label=null) { + return $this->fb($Object, $Label, FirePHP_ERROR); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $Key + * @param mixed $Variable + * @return true + * @throws Exception + */ + function dump($Key, $Variable) { + return $this->fb($Variable, $Key, FirePHP_DUMP); + } + + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $Label + * @return true + * @throws Exception + */ + function trace($Label) { + return $this->fb($Label, FirePHP_TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $Label + * @param string $Table + * @return true + * @throws Exception + */ + function table($Label, $Table) { + return $this->fb($Table, $Label, FirePHP_TABLE); + } + + /** + * Check if FirePHP is installed on client + * + * @return boolean + */ + function detectClientExtension() { + /* Check if FirePHP is installed on client */ + if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || + !version_compare($m[1][0],'0.0.6','>=')) { + return false; + } + return true; + } + + /** + * Log varible to Firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object The variable to be logged + * @return true Return TRUE if message was added to headers, FALSE otherwise + * @throws Exception + */ + function fb($Object) { + + if(!$this->enabled) { + return false; + } + + if (headers_sent($filename, $linenum)) { + trigger_error('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); + } + + $Type = null; + $Label = null; + $Options = array(); + + if(func_num_args()==1) { + } else + if(func_num_args()==2) { + switch(func_get_arg(1)) { + case FirePHP_LOG: + case FirePHP_INFO: + case FirePHP_WARN: + case FirePHP_ERROR: + case FirePHP_DUMP: + case FirePHP_TRACE: + case FirePHP_TABLE: + case FirePHP_GROUP_START: + case FirePHP_GROUP_END: + $Type = func_get_arg(1); + break; + default: + $Label = func_get_arg(1); + break; + } + } else + if(func_num_args()==3) { + $Type = func_get_arg(2); + $Label = func_get_arg(1); + } else + if(func_num_args()==4) { + $Type = func_get_arg(2); + $Label = func_get_arg(1); + $Options = func_get_arg(3); + } else { + trigger_error('Wrong number of arguments to fb() function!'); + } + + + if(!$this->detectClientExtension()) { + return false; + } + + $meta = array(); + $skipFinalObjectEncode = false; + + if($Type==FirePHP_TRACE) { + + $trace = debug_backtrace(); + if(!$trace) return false; + for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if($trace[$i]['function']=='fb' + || $trace[$i]['function']=='trace' + || $trace[$i]['function']=='send') { + $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', + 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', + 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', + 'Message'=>$trace[$i]['args'][0], + 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', + 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', + 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', + 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); + + $skipFinalObjectEncode = true; + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } else + if($Type==FirePHP_TABLE) { + + if(isset($Object[0]) && is_string($Object[0])) { + $Object[1] = $this->encodeTable($Object[1]); + } else { + $Object = $this->encodeTable($Object); + } + + $skipFinalObjectEncode = true; + + } else + if($Type==FirePHP_GROUP_START) { + + if(!$Label) { + trigger_error('You must specify a label for the group!'); + } + } else { + if($Type===null) { + $Type = FirePHP_LOG; + } + } + + if($this->options['includeLineNumbers']) { + if(!isset($meta['file']) || !isset($meta['line'])) { + + $trace = debug_backtrace(); + for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' + || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if(isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class']=='FirePHP' + && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip fb() */ + } else + if(isset($trace[$i]['file']) + && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { + /* Skip FB::fb() */ + } else { + $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; + $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; + break; + } + } + + } + } else { + unset($meta['file']); + unset($meta['line']); + } + + $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); + $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.FirePHP_VERSION); + + $structure_index = 1; + if($Type==FirePHP_DUMP) { + $structure_index = 2; + $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); + } else { + $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); + } + + if($Type==FirePHP_DUMP) { + $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; + } else { + $msg_meta = $Options; + $msg_meta['Type'] = $Type; + if($Label!==null) { + $msg_meta['Label'] = $Label; + } + if(isset($meta['file']) && !isset($msg_meta['File'])) { + $msg_meta['File'] = $meta['file']; + } + if(isset($meta['line']) && !isset($msg_meta['Line'])) { + $msg_meta['Line'] = $meta['line']; + } + $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; + } + + $parts = explode("\n",chunk_split($msg, 5000, "\n")); + + for( $i=0 ; $i2) { + // Message needs to be split into multiple parts + $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + (($i==0)?strlen($msg):'') + . '|' . $part . '|' + . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, + strlen($part) . '|' . $part . '|'); + } + + $this->messageIndex++; + + if ($this->messageIndex > 99999) { + trigger_error('Maximum number (99,999) of messages reached!'); + } + } + } + + $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); + + return true; + } + + + /** + * Standardizes path for windows systems. + * + * @param string $Path + * @return string + */ + function _standardizePath($Path) { + return preg_replace('/\\\\+/','/',$Path); + } + + /** + * Escape trace path for windows systems + * + * @param array $Trace + * @return array + */ + function _escapeTrace($Trace) { + if(!$Trace) return $Trace; + for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); + } + if(isset($Trace[$i]['args'])) { + $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); + } + } + return $Trace; + } + + /** + * Escape file information of trace for windows systems + * + * @param string $File + * @return string + */ + function _escapeTraceFile($File) { + /* Check if we have a windows filepath */ + if(strpos($File,'\\')) { + /* First strip down to single \ */ + + $file = preg_replace('/\\\\+/','\\',$File); + + return $file; + } + return $File; + } + + /** + * Send header + * + * @param string $Name + * @param string_type $Value + */ + function setHeader($Name, $Value) { + return header($Name.': '.$Value); + } + + /** + * Get user agent + * + * @return string|false + */ + function getUserAgent() { + if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; + return $_SERVER['HTTP_USER_AGENT']; + } + + /** + * Encode an object into a JSON string + * + * Uses PHP's jeson_encode() if available + * + * @param object $Object The object to be encoded + * @return string The JSON string + */ + function jsonEncode($Object, $skipObjectEncode=false) + { + if(!$skipObjectEncode) { + $Object = $this->encodeObject($Object); + } + + if(function_exists('json_encode') + && $this->options['useNativeJsonEncode']!=false) { + + return json_encode($Object); + } else { + return $this->json_encode($Object); + } + } + + /** + * Encodes a table by encoding each row and column with encodeObject() + * + * @param array $Table The table to be encoded + * @return array + */ + function encodeTable($Table) { + + if(!$Table) return $Table; + + $new_table = array(); + foreach($Table as $row) { + + if(is_array($row)) { + $new_row = array(); + + foreach($row as $item) { + $new_row[] = $this->encodeObject($item); + } + + $new_table[] = $new_row; + } + } + + return $new_table; + } + + /** + * Encodes an object + * + * @param Object $Object The object to be encoded + * @param int $Depth The current traversal depth + * @return array All members of the object + */ + function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) + { + $return = array(); + + if (is_resource($Object)) { + + return '** '.(string)$Object.' **'; + + } else + if (is_object($Object)) { + + if ($ObjectDepth > $this->options['maxObjectDepth']) { + return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; + } + + foreach ($this->objectStack as $refVal) { + if ($refVal === $Object) { + return '** Recursion ('.get_class($Object).') **'; + } + } + array_push($this->objectStack, $Object); + + $return['__className'] = $class = get_class($Object); + $class_lower = strtolower($class); + + $members = (array)$Object; + + // Include all members that are not defined in the class + // but exist in the object + foreach( $members as $raw_name => $value ) { + + $name = $raw_name; + + if ($name{0} == "\0") { + $parts = explode("\0", $name); + $name = $parts[2]; + } + + if(!isset($properties[$name])) { + $name = 'undeclared:'.$name; + + if(!(isset($this->objectFilters[$class_lower]) + && is_array($this->objectFilters[$class_lower]) + && in_array($raw_name,$this->objectFilters[$class_lower]))) { + + $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + } + + array_pop($this->objectStack); + + } elseif (is_array($Object)) { + + if ($ArrayDepth > $this->options['maxArrayDepth']) { + return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; + } + + foreach ($Object as $key => $val) { + + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($key=='GLOBALS' + && is_array($val) + && array_key_exists('GLOBALS',$val)) { + $val['GLOBALS'] = '** Recursion (GLOBALS) **'; + } + + $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); + } + } else { + if($this->is_utf8($Object)) { + return $Object; + } else { + return utf8_encode($Object); + } + } + return $return; + + } + + /** + * Returns true if $string is valid UTF-8 and false otherwise. + * + * @param mixed $str String to be tested + * @return boolean + */ + function is_utf8($str) { + $c=0; $b=0; + $bits=0; + $len=strlen($str); + for($i=0; $i<$len; $i++){ + $c=ord($str[$i]); + if($c > 128){ + if(($c >= 254)) return false; + elseif($c >= 252) $bits=6; + elseif($c >= 248) $bits=5; + elseif($c >= 240) $bits=4; + elseif($c >= 224) $bits=3; + elseif($c >= 192) $bits=2; + else return false; + if(($i+$bits) > $len) return false; + while($bits > 1){ + $i++; + $b=ord($str[$i]); + if($b < 128 || $b > 191) return false; + $bits--; + } + } + } + return true; + } + + /** + * Converts to and from JSON format. + * + * JSON (JavaScript Object Notation) is a lightweight data-interchange + * format. It is easy for humans to read and write. It is easy for machines + * to parse and generate. It is based on a subset of the JavaScript + * Programming Language, Standard ECMA-262 3rd Edition - December 1999. + * This feature can also be found in Python. JSON is a text format that is + * completely language independent but uses conventions that are familiar + * to programmers of the C-family of languages, including C, C++, C#, Java, + * JavaScript, Perl, TCL, and many others. These properties make JSON an + * ideal data-interchange language. + * + * This package provides a simple encoder and decoder for JSON notation. It + * is intended for use with client-side Javascript applications that make + * use of HTTPRequest to perform server communication functions - data can + * be encoded into JSON notation for use in a client-side javascript, or + * decoded from incoming Javascript requests. JSON format is native to + * Javascript, and can be directly eval()'ed with no further parsing + * overhead + * + * All strings should be in ASCII or UTF-8 format! + * + * LICENSE: 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. + * + * THIS SOFTWARE IS PROVIDED ``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 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 + * @package Services_JSON + * @author Michal Migurski + * @author Matt Knapp + * @author Brett Stimmerman + * @author Christoph Dorn + * @copyright 2005 Michal Migurski + * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + + + /** + * Keep a list of objects as we descend into the array so we can detect recursion. + */ + var $json_objectStack = array(); + + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + function json_utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) { + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + } + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return mixed JSON string representation of input var or an error if a problem occurs + * @access public + */ + function json_encode($var) + { + + if(is_object($var)) { + if(in_array($var,$this->json_objectStack)) { + return '"** Recursion **"'; + } + } + + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($var), + array_values($var)); + + array_pop($this->json_objectStack); + + return '{' . join(',', $properties) . '}'; + } + + $this->json_objectStack[] = $var; + + // treat it like a regular array + $elements = array_map(array($this, 'json_encode'), $var); + + array_pop($this->json_objectStack); + + return '[' . join(',', $elements) . ']'; + + case 'object': + $vars = FirePHP::encodeObject($var); + + $this->json_objectStack[] = $var; + + $properties = array_map(array($this, 'json_name_value'), + array_keys($vars), + array_values($vars)); + + array_pop($this->json_objectStack); + + return '{' . join(',', $properties) . '}'; + + default: + return null; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + function json_name_value($name, $value) + { + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if($name=='GLOBALS' + && is_array($value) + && array_key_exists('GLOBALS',$value)) { + $value['GLOBALS'] = '** Recursion **'; + } + + $encoded_value = $this->json_encode($value); + + return $this->json_encode(strval($name)) . ':' . $encoded_value; + } +} + diff --git a/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/LICENSE b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/LICENSE new file mode 100644 index 0000000000..3e390f9d96 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/LICENSE @@ -0,0 +1,29 @@ +Software License Agreement (New BSD License) + +Copyright (c) 2006-2009, Christoph Dorn +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 Christoph Dorn 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. diff --git a/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php new file mode 100644 index 0000000000..9d1857cbc9 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php @@ -0,0 +1,261 @@ + + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ + +require_once dirname(__FILE__).'/FirePHP.class.php'; + +/** + * Sends the given data to the FirePHP Firefox Extension. + * The data can be displayed in the Firebug Console or in the + * "Server" request tab. + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object + * @return true + * @throws Exception + */ +function fb() +{ + $instance = FirePHP::getInstance(true); + + $args = func_get_args(); + return call_user_func_array(array($instance,'fb'),$args); +} + + +class FB +{ + /** + * Enable and disable logging to Firebug + * + * @see FirePHP->setEnabled() + * @param boolean $Enabled TRUE to enable, FALSE to disable + * @return void + */ + public static function setEnabled($Enabled) { + $instance = FirePHP::getInstance(true); + $instance->setEnabled($Enabled); + } + + /** + * Check if logging is enabled + * + * @see FirePHP->getEnabled() + * @return boolean TRUE if enabled + */ + public static function getEnabled() { + $instance = FirePHP::getInstance(true); + return $instance->getEnabled(); + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @see FirePHP->setObjectFilter() + * @param string $Class The class name of the object + * @param array $Filter An array or members to exclude + * @return void + */ + public static function setObjectFilter($Class, $Filter) { + $instance = FirePHP::getInstance(true); + $instance->setObjectFilter($Class, $Filter); + } + + /** + * Set some options for the library + * + * @see FirePHP->setOptions() + * @param array $Options The options to be set + * @return void + */ + public static function setOptions($Options) { + $instance = FirePHP::getInstance(true); + $instance->setOptions($Options); + } + + /** + * Get options for the library + * + * @see FirePHP->getOptions() + * @return array The options + */ + public static function getOptions() { + $instance = FirePHP::getInstance(true); + return $instance->getOptions(); + } + + /** + * Log object to firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object + * @return true + * @throws Exception + */ + public static function send() + { + $instance = FirePHP::getInstance(true); + $args = func_get_args(); + return call_user_func_array(array($instance,'fb'),$args); + } + + /** + * Start a group for following messages + * + * Options: + * Collapsed: [true|false] + * Color: [#RRGGBB|ColorName] + * + * @param string $Name + * @param array $Options OPTIONAL Instructions on how to log the group + * @return true + */ + public static function group($Name, $Options=null) { + $instance = FirePHP::getInstance(true); + return $instance->group($Name, $Options); + } + + /** + * Ends a group you have started before + * + * @return true + * @throws Exception + */ + public static function groupEnd() { + return self::send(null, null, FirePHP::GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public static function log($Object, $Label=null) { + return self::send($Object, $Label, FirePHP::LOG); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public static function info($Object, $Label=null) { + return self::send($Object, $Label, FirePHP::INFO); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public static function warn($Object, $Label=null) { + return self::send($Object, $Label, FirePHP::WARN); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $Object + * @param string $Label + * @return true + * @throws Exception + */ + public static function error($Object, $Label=null) { + return self::send($Object, $Label, FirePHP::ERROR); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $Key + * @param mixed $Variable + * @return true + * @throws Exception + */ + public static function dump($Key, $Variable) { + return self::send($Variable, $Key, FirePHP::DUMP); + } + + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $Label + * @return true + * @throws Exception + */ + public static function trace($Label) { + return self::send($Label, FirePHP::TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $Label + * @param string $Table + * @return true + * @throws Exception + */ + public static function table($Label, $Table) { + return self::send($Table, $Label, FirePHP::TABLE); + } + +} + diff --git a/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php4 b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php4 new file mode 100644 index 0000000000..5b69e34873 --- /dev/null +++ b/plugins/FirePHP/extlib/FirePHP/lib/FirePHPCore/fb.php4 @@ -0,0 +1,251 @@ + + * @author Michael Day + * @license http://www.opensource.org/licenses/bsd-license.php + * @package FirePHP + */ + +require_once dirname(__FILE__).'/FirePHP.class.php4'; + +/** + * Sends the given data to the FirePHP Firefox Extension. + * The data can be displayed in the Firebug Console or in the + * "Server" request tab. + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object + * @return true + * @throws Exception + */ +function fb() +{ + $instance =& FirePHP::getInstance(true); + + $args = func_get_args(); + return call_user_func_array(array(&$instance,'fb'),$args); +} + + +class FB +{ + /** + * Enable and disable logging to Firebug + * + * @see FirePHP->setEnabled() + * @param boolean $Enabled TRUE to enable, FALSE to disable + * @return void + */ + function setEnabled($Enabled) { + $instance =& FirePHP::getInstance(true); + $instance->setEnabled($Enabled); + } + + /** + * Check if logging is enabled + * + * @see FirePHP->getEnabled() + * @return boolean TRUE if enabled + */ + function getEnabled() { + $instance =& FirePHP::getInstance(true); + return $instance->getEnabled(); + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @see FirePHP->setObjectFilter() + * @param string $Class The class name of the object + * @param array $Filter An array or members to exclude + * @return void + */ + function setObjectFilter($Class, $Filter) { + $instance =& FirePHP::getInstance(true); + $instance->setObjectFilter($Class, $Filter); + } + + /** + * Set some options for the library + * + * @see FirePHP->setOptions() + * @param array $Options The options to be set + * @return void + */ + function setOptions($Options) { + $instance =& FirePHP::getInstance(true); + $instance->setOptions($Options); + } + + /** + * Get options for the library + * + * @see FirePHP->getOptions() + * @return array The options + */ + function getOptions() { + $instance =& FirePHP::getInstance(true); + return $instance->getOptions(); + } + + /** + * Log object to firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $Object + * @return true + */ + function send() + { + $instance =& FirePHP::getInstance(true); + $args = func_get_args(); + return call_user_func_array(array(&$instance,'fb'),$args); + } + + /** + * Start a group for following messages + * + * Options: + * Collapsed: [true|false] + * Color: [#RRGGBB|ColorName] + * + * @param string $Name + * @param array $Options OPTIONAL Instructions on how to log the group + * @return true + */ + function group($Name, $Options=null) { + $instance =& FirePHP::getInstance(true); + return $instance->group($Name, $Options); + } + + /** + * Ends a group you have started before + * + * @return true + */ + function groupEnd() { + return FB::send(null, null, FirePHP_GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $Object + * @param string $Label + * @return true + */ + function log($Object, $Label=null) { + return FB::send($Object, $Label, FirePHP_LOG); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $Object + * @param string $Label + * @return true + */ + function info($Object, $Label=null) { + return FB::send($Object, $Label, FirePHP_INFO); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $Object + * @param string $Label + * @return true + */ + function warn($Object, $Label=null) { + return FB::send($Object, $Label, FirePHP_WARN); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $Object + * @param string $Label + * @return true + */ + function error($Object, $Label=null) { + return FB::send($Object, $Label, FirePHP_ERROR); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $Key + * @param mixed $Variable + * @return true + */ + function dump($Key, $Variable) { + return FB::send($Variable, $Key, FirePHP_DUMP); + } + + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $Label + * @return true + */ + function trace($Label) { + return FB::send($Label, FirePHP_TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $Label + * @param string $Table + * @return true + */ + function table($Label, $Table) { + return FB::send($Table, $Label, FirePHP_TABLE); + } +} From c9fcd73798ffb7ac050af510d65771aa1020a438 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Sat, 5 Dec 2009 18:47:44 +0100 Subject: [PATCH 37/70] Changed input.submit style --- .../images/illustrations/illu_pattern-01.png | Bin 0 -> 538 bytes theme/default/css/display.css | 22 +++++++++++++++++- theme/identica/css/display.css | 22 +++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 theme/base/images/illustrations/illu_pattern-01.png diff --git a/theme/base/images/illustrations/illu_pattern-01.png b/theme/base/images/illustrations/illu_pattern-01.png new file mode 100644 index 0000000000000000000000000000000000000000..833309e587081595bc549479a656b7dc29f0ddd4 GIT binary patch literal 538 zcmV+#0_FXQP)Px$)Ja4^RA}DqSV3;XFbt!B{r^RK*t#CL!~Sis`%|0qz#hGX6Ue4a4DBqB^? zx4KvaY=pr)+lZGN75dNE;{uxxj6@SDlPZ#m%;9p7Mn-0meMZyjA}x^k*?Y!k2S%!8 zv#S3nm}dcEwvlLYii~ERYuWb4jb#2!p-5IUsN@t!*LwD1D9A<1g@}=xSkzXH;F4ri z2i+K1?U_~`NntFiZHIt*ElNd{5VSN9I)y32P^7hzjMXg)m5tmlE}+W2EMO*TUJs1? zYm7OPMMJg9X9dNaTDEt;GmOkGG;1!iyrbHUSNB>7tdqgmnQq~9%$V%n1e|a!6v<6x z4AqRN8)j16GN*DSw&jR2`Ro{T`l&028*ae7I>JQDRfeFnCmsu_wEpaD>S`Ui6;SIr z)+-M6%#&922b6k>B6qr89k~@O4x(*G24E9GJlyx}S2=5%sTa@u*xEm=?&2Z96^TWs zCCZU(+5uEZ3k%6zac=f7)&PK{0f3p2q?y?svGMnI?cE#S5nUH|3`C>RXfzs)Mx)Va cG#Wd;04~J|s*~4%!~g&Q07*qoM6N<$g12b(N&o-= literal 0 HcmV?d00001 diff --git a/theme/default/css/display.css b/theme/default/css/display.css index ad64b4198f..d11bbe15e3 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -55,7 +55,6 @@ border-color:#DDDDDD; background:none; } -input.submit, .form_notice.warning #notice_text-count, .form_settings .form_note, .entity_remote_subscribe, @@ -92,6 +91,27 @@ input.submit, .entity_actions .form_notice input.submit { color:#FFFFFF; } +input.submit { +background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x; +text-shadow:0 1px 0 #FFFFFF; +color:#000000; +border-color:#AAAAAA; +border-top-color:#CCCCCC; +border-left-color:#CCCCCC; +} +input.submit:hover { +background-position:0 -5px; +} +input.submit:focus { +background-position:0 -15px; +box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +text-shadow:none; +} +.entity_actions input.submit { +text-shadow:none; +} a, .form_settings input.form_action-primary, diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index d5a5d38dee..d65ea2ef63 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -55,7 +55,6 @@ border-color:#DDDDDD; background:none; } -input.submit, .form_notice.warning #notice_text-count, .form_settings .form_note, .entity_remote_subscribe, @@ -92,6 +91,27 @@ input.submit, .entity_actions .form_notice input.submit { color:#FFFFFF; } +input.submit { +background:#AAAAAA url(../../base/images/illustrations/illu_pattern-01.png) 0 0 repeat-x; +text-shadow:0 1px 0 #FFFFFF; +color:#000000; +border-color:#AAAAAA; +border-top-color:#CCCCCC; +border-left-color:#CCCCCC; +} +input.submit:hover { +background-position:0 -5px; +} +input.submit:focus { +background-position:0 -15px; +box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +-moz-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +-webkit-box-shadow:3px 3px 3px rgba(194, 194, 194, 0.1); +text-shadow:none; +} +.entity_actions input.submit { +text-shadow:none; +} a, .form_settings input.form_action-primary, From 197a823be4713d4644491ec99cf00a70454c3086 Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Sat, 5 Dec 2009 21:01:18 +0100 Subject: [PATCH 38/70] Localisation updates for !StatusNet from !translatewiki.net !sntrans --- locale/ar/LC_MESSAGES/statusnet.po | 121 +- locale/bg/LC_MESSAGES/statusnet.po | 94 +- locale/ca/LC_MESSAGES/statusnet.po | 122 +- locale/cs/LC_MESSAGES/statusnet.po | 196 +- locale/de/LC_MESSAGES/statusnet.po | 296 ++- locale/el/LC_MESSAGES/statusnet.po | 130 +- locale/en_GB/LC_MESSAGES/statusnet.po | 94 +- locale/es/LC_MESSAGES/statusnet.po | 94 +- locale/fi/LC_MESSAGES/statusnet.po | 94 +- locale/fr/LC_MESSAGES/statusnet.po | 369 +-- locale/ga/LC_MESSAGES/statusnet.po | 94 +- locale/he/LC_MESSAGES/statusnet.po | 94 +- locale/hsb/LC_MESSAGES/statusnet.po | 3139 ++++++++++++++++++++++++- locale/is/LC_MESSAGES/statusnet.po | 94 +- locale/it/LC_MESSAGES/statusnet.po | 94 +- locale/ja/LC_MESSAGES/statusnet.po | 94 +- locale/ko/LC_MESSAGES/statusnet.po | 94 +- locale/mk/LC_MESSAGES/statusnet.po | 94 +- locale/nb/LC_MESSAGES/statusnet.po | 94 +- locale/nl/LC_MESSAGES/statusnet.po | 101 +- locale/nn/LC_MESSAGES/statusnet.po | 94 +- locale/pl/LC_MESSAGES/statusnet.po | 94 +- locale/pt/LC_MESSAGES/statusnet.po | 188 +- locale/pt_BR/LC_MESSAGES/statusnet.po | 98 +- locale/ru/LC_MESSAGES/statusnet.po | 101 +- locale/statusnet.po | 88 +- locale/sv/LC_MESSAGES/statusnet.po | 1086 ++++----- locale/te/LC_MESSAGES/statusnet.po | 94 +- locale/tr/LC_MESSAGES/statusnet.po | 94 +- locale/uk/LC_MESSAGES/statusnet.po | 167 +- locale/vi/LC_MESSAGES/statusnet.po | 94 +- locale/zh_CN/LC_MESSAGES/statusnet.po | 94 +- locale/zh_TW/LC_MESSAGES/statusnet.po | 94 +- 33 files changed, 5507 insertions(+), 2481 deletions(-) diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index 2b8f80bdc8..1cffffcf3d 100644 --- a/locale/ar/LC_MESSAGES/statusnet.po +++ b/locale/ar/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:01+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:53:47+0000\n" "Language-Team: Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ar\n" "X-Message-Group: out-statusnet\n" @@ -181,7 +181,12 @@ msgstr "ليس للمستخدم ملف شخصي." msgid "Could not save profile." msgstr "تعذّر حفظ الملف الشخصي." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "لا يمكنك حذف المستخدمين." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "فشل منع المستخدم." @@ -805,100 +810,100 @@ msgstr "التصميم" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "مسار شعار غير صالح." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "السمة غير متوفرة: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "غيّر الشعار" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "شعار الموقع" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "غيّر السمة" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "سمة الموقع" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "سمة الموقع." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "تغيير صورة الخلفية" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "الخلفية" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "مكّن" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "عطّل" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "مكّن صورة الخلفية أو عطّلها." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "تغيير الألوان" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "المحتوى" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "الشريط الجانبي" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "النص" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "وصلات" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "استخدم المبدئيات" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "استعد التصميمات المبدئية" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "ارجع إلى المبدئي" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -908,7 +913,7 @@ msgstr "ارجع إلى المبدئي" msgid "Save" msgstr "أرسل" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "احفظ التصميم" @@ -1135,16 +1140,16 @@ msgstr "" #: actions/favorited.php:65 lib/popularnoticesection.php:88 #: lib/publicgroupnav.php:93 msgid "Popular notices" -msgstr "" +msgstr "إشعارات مشهورة" #: actions/favorited.php:67 #, php-format msgid "Popular notices, page %d" -msgstr "" +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." @@ -1306,11 +1311,11 @@ msgstr "لا تمنع هذا المستخدم من هذه المجموعة" #: actions/groupblock.php:179 msgid "Block this user from this group" -msgstr "" +msgstr "امنع هذا المستخدم من هذه المجموعة" #: actions/groupblock.php:196 msgid "Database error blocking user from group." -msgstr "" +msgstr "خطأ في قاعدة البيانات أثناء منع المستخدم من المجموعة." #: actions/groupbyid.php:74 msgid "No ID" @@ -1330,18 +1335,18 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "تعذّر تحديث تصميمك." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" @@ -1637,7 +1642,7 @@ msgstr "رسالة شخصية" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "أرسل" @@ -1922,8 +1927,8 @@ msgstr "نوع المحتوى " msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "ليس نسق بيانات مدعوم." @@ -2500,7 +2505,7 @@ msgstr "" #: actions/recoverpassword.php:352 msgid "Password must be 6 chars or more." -msgstr "" +msgstr "يجب أن تكون كلمة السر 6 محارف أو أكثر." #: actions/recoverpassword.php:356 msgid "Password and confirmation do not match." @@ -2516,7 +2521,7 @@ msgstr "" #: actions/register.php:85 actions/register.php:189 actions/register.php:404 msgid "Sorry, only invited people can register." -msgstr "" +msgstr "عذرًا، الأشخاص المدعوون وحدهم يستطيعون التسجيل." #: actions/register.php:92 msgid "Sorry, invalid invitation code." @@ -3062,9 +3067,8 @@ msgid "Contact email address for your site" msgstr "عنوان البريد الإلكتروني للاتصال بموقعك" #: actions/siteadminpanel.php:290 -#, fuzzy msgid "Local" -msgstr "الموقع" +msgstr "محلي" #: actions/siteadminpanel.php:301 msgid "Default timezone" @@ -3103,13 +3107,12 @@ msgid "Access" msgstr "نفاذ" #: actions/siteadminpanel.php:334 -#, fuzzy msgid "Private" -msgstr "خصوصية" +msgstr "خاص" #: actions/siteadminpanel.php:336 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "" +msgstr "أأمنع المستخدمين المجهولين (غير الوالجين) من عرض الموقع؟" #: actions/siteadminpanel.php:340 #, fuzzy @@ -4320,16 +4323,11 @@ msgid "Upload file" msgstr "ارفع ملفًا" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "هذا الملف كبير جدًا. إن أقصى حجم للملفات هو %s." +msgstr "تستطيع رفع صورتك الشخصية. أقصى حجم للملف هو 2 م.ب." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "استعيدت مبدئيات التصميم." @@ -4773,7 +4771,7 @@ msgstr "أرسل إشعارًا مباشرًا" msgid "To" msgstr "إلى" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "المحارف المتوفرة" @@ -4786,11 +4784,11 @@ msgstr "أرسل إشعارًا" msgid "What's up, %s?" msgstr "ما الأخبار يا %s؟" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "أرفق" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "أرفق ملفًا" @@ -4955,7 +4953,7 @@ msgstr "مُختارون" #: lib/publicgroupnav.php:92 msgid "Popular" -msgstr "" +msgstr "مشهورة" #: lib/sandboxform.php:67 msgid "Sandbox" @@ -5060,7 +5058,12 @@ msgstr "" msgid "Not subscribed!" msgstr "لست مُشتركًا!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "تعذّر حذف الاشتراك." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "تعذّر حذف الاشتراك." diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index 8d020e0849..e5656cb5f2 100644 --- a/locale/bg/LC_MESSAGES/statusnet.po +++ b/locale/bg/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:07+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:53:50+0000\n" "Language-Team: Bulgarian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: bg\n" "X-Message-Group: out-statusnet\n" @@ -180,7 +180,12 @@ msgstr "Потребителят няма профил." msgid "Could not save profile." msgstr "Грешка при запазване на профила." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Не можете да спрете да следите себе си!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -818,106 +823,106 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Неправилен размер." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Страницата не е достъпна във вида медия, който приемате" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Смяна на логото" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Покани" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Промяна" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Нова бележка" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Излизане от сайта" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Смяна на изображението за фон" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Може да качите лого за групата ви." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Вкл." -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Изкл." -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Смяна на цветовете" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Съдържание" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Страничен панел" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Текст" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Списък" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -927,7 +932,7 @@ msgstr "" msgid "Save" msgstr "Запазване" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1370,20 +1375,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Грешка при обновяване на потребителя." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Грешка при записване настройките за Twitter" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Настройките са запазени." @@ -1699,7 +1704,7 @@ msgstr "Лично съобщение" msgid "Optionally add a personal message to the invitation." msgstr "Може да добавите и лично съобщение към поканата." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Прати" @@ -2022,8 +2027,8 @@ msgstr "Свързване" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Неподдържан формат на данните" @@ -4516,11 +4521,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Можете да качите личен аватар тук." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4978,7 +4979,7 @@ msgstr "Изпращане на пряко съобщеие" msgid "To" msgstr "До" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Налични знаци" @@ -4991,11 +4992,11 @@ msgstr "Изпращане на бележка" msgid "What's up, %s?" msgstr "Какво става, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5272,7 +5273,12 @@ msgstr "Грешка при абониране на друг потребите msgid "Not subscribed!" msgstr "Не сте абонирани!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Грешка при изтриване на абонамента." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Грешка при изтриване на абонамента." diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index 23102cfb12..b4e2f70370 100644 --- a/locale/ca/LC_MESSAGES/statusnet.po +++ b/locale/ca/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:11+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:53:53+0000\n" "Language-Team: Catalan\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ca\n" "X-Message-Group: out-statusnet\n" @@ -183,7 +183,12 @@ msgstr "L'usuari no té perfil." msgid "Could not save profile." msgstr "No s'ha pogut guardar el perfil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "No podeu suprimir els usuaris." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Ha fallat el bloqueig d'usuari." @@ -266,7 +271,7 @@ msgstr "Aquesta notificació no és un favorit!" #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 msgid "Could not delete favorite." -msgstr "No pots eliminar favorits." +msgstr "No s'ha pogut suprimir el preferit." #: actions/apifriendshipscreate.php:109 msgid "Could not follow user: User not found." @@ -834,102 +839,102 @@ msgstr "Disseny" msgid "Design settings for this StatusNet site." msgstr "Paràmetres de disseny d'aquest lloc StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Mida invàlida." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Aquesta pàgina no està disponible en " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Canvia el logotip" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Logotip del lloc" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Canvia el tema" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Avís del lloc" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Tema del lloc." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Canvia la imatge de fons" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Fons" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Pots pujar una imatge de logo per al grup." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Canvia els colors" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Contingut" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Enllaços" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -939,7 +944,7 @@ msgstr "" msgid "Save" msgstr "Guardar" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Desa el disseny" @@ -949,7 +954,7 @@ msgstr "Aquesta notificació no és un favorit!" #: actions/disfavor.php:94 msgid "Add to favorites" -msgstr "Afegir a favorits" +msgstr "Afegeix als preferits" #: actions/doc.php:69 msgid "No such document." @@ -1007,13 +1012,13 @@ msgstr "Adreça" #: actions/emailsettings.php:105 msgid "Current confirmed email address." -msgstr "Correu electrònic confirmat actualment." +msgstr "Adreça electrònica confirmada actualment." #: actions/emailsettings.php:107 actions/emailsettings.php:140 #: actions/imsettings.php:108 actions/smssettings.php:115 #: actions/smssettings.php:158 msgid "Remove" -msgstr "Eliminar" +msgstr "Suprimeix" #: actions/emailsettings.php:113 msgid "" @@ -1026,7 +1031,7 @@ msgstr "" #: actions/emailsettings.php:117 actions/imsettings.php:120 #: actions/smssettings.php:126 msgid "Cancel" -msgstr "Cancel·lar" +msgstr "Cancel·la" #: actions/emailsettings.php:121 msgid "Email Address" @@ -1039,7 +1044,7 @@ msgstr "Correu electrònic, com Email address, like \"UserName@example.org\"" #: actions/emailsettings.php:126 actions/imsettings.php:133 #: actions/smssettings.php:145 msgid "Add" -msgstr "Afegir" +msgstr "Afegeix" #: actions/emailsettings.php:133 actions/smssettings.php:152 msgid "Incoming email" @@ -1048,7 +1053,7 @@ msgstr "Correu electrònic entrant" #: actions/emailsettings.php:138 actions/smssettings.php:157 msgid "Send email to this address to post new notices." msgstr "" -"Enviar correu electrònic a aquesta direcció per publicar noves notificacions." +"Envia correu electrònic a aquesta adreça per publicar noves notificacions." #: actions/emailsettings.php:145 actions/smssettings.php:162 msgid "Make a new email address for posting to; cancels the old one." @@ -1384,20 +1389,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "No s'ha pogut actualitzar l'usuari." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "No s'ha pogut guardar la teva configuració de Twitter!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Preferències de sincronització guardades." @@ -1447,7 +1452,7 @@ msgstr "Admin" #: actions/groupmembers.php:346 lib/blockform.php:69 msgid "Block" -msgstr "Bloquejar" +msgstr "Bloca" #: actions/groupmembers.php:441 #, fuzzy @@ -1724,9 +1729,9 @@ msgstr "Missatge personal" msgid "Optionally add a personal message to the invitation." msgstr "Opcionalment pots afegir un missatge a la invitació." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" -msgstr "Enviar" +msgstr "Envia" #: actions/invite.php:226 #, php-format @@ -1937,7 +1942,7 @@ msgstr "Nou missatge" #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:367 msgid "You can't send a message to this user." -msgstr "No pots enviar un missatge a aquest usuari." +msgstr "No podeu enviar un misssatge a aquest usuari." #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:351 #: lib/command.php:424 @@ -2048,8 +2053,8 @@ msgstr "tipus de contingut " msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Format de data no suportat." @@ -4514,9 +4519,8 @@ msgid "" msgstr "" #: lib/common.php:199 -#, fuzzy msgid "No configuration file found. " -msgstr "Cap codi de confirmació." +msgstr "No s'ha trobat cap fitxer de configuració. " #: lib/common.php:200 msgid "I looked for configuration files in the following places: " @@ -4527,9 +4531,8 @@ msgid "You may wish to run the installer to fix this." msgstr "" #: lib/common.php:202 -#, fuzzy msgid "Go to the installer." -msgstr "Accedir a aquest lloc" +msgstr "Vés a l'instal·lador." #: lib/connectsettingsaction.php:110 msgid "IM" @@ -4558,11 +4561,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Pots pujar el teu avatar personal." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5027,7 +5026,7 @@ msgstr "Enviar notificació directa" msgid "To" msgstr "A" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Caràcters disponibles" @@ -5040,11 +5039,11 @@ msgstr "Enviar notificació" msgid "What's up, %s?" msgstr "Què tal, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5135,7 +5134,7 @@ msgstr "Respostes" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "Favorits" +msgstr "Preferits" #: lib/personalgroupnav.php:124 msgid "Inbox" @@ -5322,7 +5321,12 @@ msgstr "No pots subscriure a un altre a tu mateix." msgid "Not subscribed!" msgstr "No estàs subscrit!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "No s'ha pogut eliminar la subscripció." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "No s'ha pogut eliminar la subscripció." diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index f1e002a9d6..8501aacfa8 100644 --- a/locale/cs/LC_MESSAGES/statusnet.po +++ b/locale/cs/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:14+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:53:56+0000\n" "Language-Team: Czech\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: cs\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "Uživatel nemá profil." msgid "Could not save profile." msgstr "Nelze uložit profil" -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Nelze aktualizovat uživatele" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -265,7 +270,7 @@ msgstr "" #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 msgid "Could not delete favorite." -msgstr "" +msgstr "Nelze smazat oblíbenou položku." #: actions/apifriendshipscreate.php:109 msgid "Could not follow user: User not found." @@ -609,25 +614,22 @@ msgid "Failed updating avatar." msgstr "Nahrávání obrázku selhalo." #: actions/avatarsettings.php:387 -#, fuzzy msgid "Avatar deleted." -msgstr "Obrázek nahrán" +msgstr "Avatar smazán." #: 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/joingroup.php:76 actions/showgroup.php:121 -#, fuzzy msgid "No nickname" -msgstr "Žádná přezdívka." +msgstr "Žádná přezdívka" #: actions/blockedfromgroup.php:80 actions/editgroup.php:96 #: actions/groupbyid.php:83 actions/groupdesignsettings.php:97 #: actions/grouplogo.php:99 actions/groupmembers.php:83 #: actions/grouprss.php:98 actions/joingroup.php:83 actions/showgroup.php:137 -#, fuzzy msgid "No such group" -msgstr "Žádné takové oznámení." +msgstr "Žádná taková skupina" #: actions/blockedfromgroup.php:90 #, fuzzy, php-format @@ -677,7 +679,7 @@ msgstr "" #: actions/block.php:143 actions/deletenotice.php:145 #: actions/deleteuser.php:147 actions/groupblock.php:178 msgid "No" -msgstr "" +msgstr "Ne" #: actions/block.php:143 actions/deleteuser.php:147 #, fuzzy @@ -687,12 +689,11 @@ msgstr "Žádný takový uživatel." #: actions/block.php:144 actions/deletenotice.php:146 #: actions/deleteuser.php:148 actions/groupblock.php:179 msgid "Yes" -msgstr "" +msgstr "Ano" #: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80 -#, fuzzy msgid "Block this user" -msgstr "Žádný takový uživatel." +msgstr "Zablokovat tohoto uživatele" #: actions/block.php:162 msgid "Failed to save block information." @@ -770,7 +771,7 @@ msgstr "Nepřihlášen" #: actions/deletenotice.php:71 msgid "Can't delete this notice." -msgstr "" +msgstr "Toto oznámení nelze odstranit." #: actions/deletenotice.php:103 msgid "" @@ -793,7 +794,7 @@ msgstr "Žádné takové oznámení." #: actions/deletenotice.php:146 lib/noticelist.php:550 msgid "Delete this notice" -msgstr "" +msgstr "Odstranit toto oznámení" #: actions/deletenotice.php:157 msgid "There was a problem with your session token. Try again, please." @@ -820,122 +821,118 @@ msgid "" msgstr "" #: actions/deleteuser.php:148 lib/deleteuserform.php:77 -#, fuzzy msgid "Delete this user" -msgstr "Žádný takový uživatel." +msgstr "Odstranit tohoto uživatele" #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124 #: lib/adminpanelaction.php:302 lib/groupnav.php:119 msgid "Design" -msgstr "" +msgstr "Vzhled" #: actions/designadminpanel.php:73 msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Neplatná velikost" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Tato stránka není k dispozici v typu média která přijímáte." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Změnit heslo" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Nové sdělení" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Změnit" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Nové sdělení" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" -msgstr "" +msgstr "Pozadí" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, 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ů" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 -#, fuzzy +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" -msgstr "Změnit heslo" +msgstr "Změnit barvy" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 -#, fuzzy +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" -msgstr "Připojit" +msgstr "Obsah" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Hledat" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 -#, fuzzy +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" -msgstr "Přihlásit" +msgstr "Odkazy" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -945,7 +942,7 @@ msgstr "" msgid "Save" msgstr "Uložit" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -955,7 +952,7 @@ msgstr "" #: actions/disfavor.php:94 msgid "Add to favorites" -msgstr "" +msgstr "Přidat do oblíbených" #: actions/doc.php:69 msgid "No such document." @@ -964,7 +961,7 @@ msgstr "Žádný takový dokument." #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "" +msgstr "Upravit %s skupinu" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 msgid "You must be logged in to create a group." @@ -995,13 +992,12 @@ msgid "Could not create aliases." msgstr "Nelze uložin informace o obrázku" #: actions/editgroup.php:269 -#, fuzzy msgid "Options saved." -msgstr "Nastavení uloženo" +msgstr "Nastavení uloženo." #: actions/emailsettings.php:60 msgid "Email Settings" -msgstr "" +msgstr "Nastavení E-mailu" #: actions/emailsettings.php:71 #, php-format @@ -1061,7 +1057,7 @@ msgstr "" #: actions/emailsettings.php:148 actions/smssettings.php:164 msgid "New" -msgstr "" +msgstr "Nový" #: actions/emailsettings.php:153 actions/imsettings.php:139 #: actions/smssettings.php:169 @@ -1244,9 +1240,8 @@ msgid "No notice id" msgstr "Nové sdělení" #: actions/file.php:38 -#, fuzzy msgid "No notice" -msgstr "Nové sdělení" +msgstr "Žádné oznámení" #: actions/file.php:42 msgid "No attachments" @@ -1385,26 +1380,26 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Nelze aktualizovat uživatele" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Nastavení uloženo" #: actions/grouplogo.php:139 actions/grouplogo.php:192 msgid "Group logo" -msgstr "" +msgstr "Logo skupiny" #: actions/grouplogo.php:150 #, php-format @@ -1502,7 +1497,7 @@ msgstr "" #: actions/groups.php:62 lib/profileaction.php:210 lib/profileaction.php:230 #: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 msgid "Groups" -msgstr "" +msgstr "Skupiny" #: actions/groups.php:64 #, php-format @@ -1712,7 +1707,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Odeslat" @@ -1885,7 +1880,7 @@ msgstr "" #: actions/newgroup.php:53 msgid "New group" -msgstr "" +msgstr "Nová skupina" #: actions/newgroup.php:110 msgid "Use this form to create a new group." @@ -2008,8 +2003,8 @@ msgstr "Připojit" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -2313,9 +2308,8 @@ msgid "Describe yourself and your interests in %d chars" msgstr "Popiš sebe a své zájmy ve 140 znacích" #: actions/profilesettings.php:125 actions/register.php:463 -#, fuzzy msgid "Describe yourself and your interests" -msgstr "Popiš sebe a své zájmy ve 140 znacích" +msgstr "Popište sebe a své zájmy" #: actions/profilesettings.php:127 actions/register.php:465 msgid "Bio" @@ -2345,7 +2339,7 @@ msgstr "" #: actions/profilesettings.php:144 actions/siteadminpanel.php:307 msgid "Language" -msgstr "" +msgstr "Jazyk" #: actions/profilesettings.php:145 msgid "Preferred language" @@ -2629,7 +2623,7 @@ msgstr "Chyba v ověřovacím kódu" #: actions/register.php:112 msgid "Registration successful" -msgstr "" +msgstr "Registrace úspěšná" #: actions/register.php:114 actions/register.php:502 lib/action.php:455 #: lib/logingroupnav.php:85 @@ -2921,9 +2915,8 @@ msgstr "" #: actions/showgroup.php:274 actions/tagother.php:128 #: actions/userauthorization.php:179 lib/userprofile.php:194 -#, fuzzy msgid "Note" -msgstr "Sdělení" +msgstr "Poznámka" #: actions/showgroup.php:284 lib/groupeditform.php:184 msgid "Aliases" @@ -3392,7 +3385,7 @@ msgstr "" #: actions/smssettings.php:306 msgid "No phone number." -msgstr "" +msgstr "Žádné telefonní číslo." #: actions/smssettings.php:311 msgid "No carrier selected." @@ -3759,7 +3752,7 @@ msgstr "" #: actions/userauthorization.php:188 msgid "License" -msgstr "" +msgstr "Licence" #: actions/userauthorization.php:209 msgid "Accept" @@ -4074,9 +4067,8 @@ msgid "Help" msgstr "Nápověda" #: lib/action.php:461 -#, fuzzy msgid "Help me!" -msgstr "Nápověda" +msgstr "Pomoci mi!" #: lib/action.php:464 lib/searchaction.php:127 msgid "Search" @@ -4233,9 +4225,8 @@ msgid "Author" msgstr "" #: lib/attachmentlist.php:278 -#, fuzzy msgid "Provider" -msgstr "Profil" +msgstr "Poskytovatel" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" @@ -4500,11 +4491,7 @@ 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ů" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4616,9 +4603,8 @@ msgid "Edit %s group properties" msgstr "" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Odhlásit" +msgstr "Logo" #: lib/groupnav.php:114 #, php-format @@ -4691,9 +4677,8 @@ msgid "[%s]" msgstr "" #: lib/joinform.php:114 -#, fuzzy msgid "Join" -msgstr "Přihlásit" +msgstr "Přidat se" #: lib/leaveform.php:114 #, fuzzy @@ -4773,9 +4758,9 @@ msgstr "" "%4$s.\n" #: lib/mail.php:254 -#, fuzzy, php-format +#, php-format msgid "Location: %s\n" -msgstr "Umístění %s\n" +msgstr "Umístění: %s\n" #: lib/mail.php:256 #, fuzzy, php-format @@ -4968,7 +4953,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 a více znaků" @@ -4983,11 +4968,11 @@ msgstr "Nové sdělení" msgid "What's up, %s?" msgstr "Co se děje %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5077,7 +5062,7 @@ msgstr "Odpovědi" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "" +msgstr "Oblíbené" #: lib/personalgroupnav.php:124 msgid "Inbox" @@ -5113,9 +5098,8 @@ msgid "Subscribers" msgstr "Odběratelé" #: lib/profileaction.php:157 -#, fuzzy msgid "All subscribers" -msgstr "Odběratelé" +msgstr "Všichni odběratelé" #: lib/profileaction.php:178 msgid "User ID" @@ -5267,7 +5251,12 @@ msgstr "" msgid "Not subscribed!" msgstr "Nepřihlášen!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Nelze smazat odebírání" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Nelze smazat odebírání" @@ -5306,13 +5295,12 @@ msgid "Unsubscribe" msgstr "Odhlásit" #: lib/userprofile.php:116 -#, fuzzy msgid "Edit Avatar" -msgstr "Obrázek" +msgstr "Upravit avatar" #: lib/userprofile.php:236 msgid "User actions" -msgstr "" +msgstr "Akce uživatele" #: lib/userprofile.php:248 #, fuzzy @@ -5329,7 +5317,7 @@ msgstr "" #: lib/userprofile.php:273 msgid "Message" -msgstr "" +msgstr "Zpráva" #: lib/userprofile.php:311 msgid "Moderate" @@ -5395,7 +5383,7 @@ msgstr "" #: scripts/maildaemon.php:53 msgid "Not a registered user." -msgstr "" +msgstr "Není registrovaný uživatel." #: scripts/maildaemon.php:57 msgid "Sorry, that is not your incoming email address." diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po index e68bc1fd48..2bc9805d97 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:18+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:00+0000\n" "Language-Team: German\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: de\n" "X-Message-Group: out-statusnet\n" @@ -180,7 +180,12 @@ msgstr "Benutzer hat kein Profil." msgid "Could not save profile." msgstr "Konnte Profil nicht speichern." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Du kannst dich nicht selbst entfolgen!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Blockieren des Benutzers fehlgeschlagen." @@ -320,13 +325,13 @@ msgstr "Ungültiger Nutzername." #: actions/register.php:217 msgid "Homepage is not a valid URL." msgstr "" -"Homepage ist kein gültiger URL. URL´s müssen ein Präfix wie http enthalten." +"Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten." #: actions/apigroupcreate.php:205 actions/editgroup.php:198 #: actions/newgroup.php:142 actions/profilesettings.php:218 #: actions/register.php:220 msgid "Full name is too long (max 255 chars)." -msgstr "Ihr vollständiger Name ist zu lang (maximal 255 Zeichen)." +msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)." #: actions/apigroupcreate.php:213 #, php-format @@ -374,7 +379,7 @@ msgstr "Du bist bereits Mitglied dieser Gruppe" #: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221 msgid "You have been blocked from that group by the admin." -msgstr "Der Admin dieser Gruppe hat Sie gesperrt." +msgstr "Der Admin dieser Gruppe hat dich gesperrt." #: actions/apigroupjoin.php:138 #, php-format @@ -498,7 +503,7 @@ msgstr "Nachrichten, die mit %s getagt sind" #: actions/apitimelinetag.php:107 actions/tagrss.php:64 #, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "Updates mit %1$s getagt auf %2$s!" +msgstr "Aktualisierungen mit %1$s getagt auf %2$s!" #: actions/apiusershow.php:96 msgid "Not found." @@ -686,9 +691,8 @@ msgid "Failed to save block information." msgstr "Konnte Blockierungsdaten nicht speichern." #: actions/bookmarklet.php:50 -#, fuzzy msgid "Post to " -msgstr "Foto" +msgstr "Versenden an " #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -731,7 +735,7 @@ msgstr "Adresse bestätigen" #: actions/confirmaddress.php:159 #, php-format msgid "The address \"%s\" has been confirmed for your account." -msgstr "Die Adresse „%s“\" wurde für dein Konto bestätigt." +msgstr "Die Adresse „%s“ wurde für dein Konto bestätigt." #: actions/conversation.php:99 msgid "Conversation" @@ -773,7 +777,7 @@ msgstr "Notiz löschen" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "Sind sie sicher, dass sie diese Nachricht löschen wollen?" +msgstr "Bist du sicher, dass du diese Nachricht löschen möchtest?" #: actions/deletenotice.php:145 msgid "Do not delete this notice" @@ -816,107 +820,104 @@ msgstr "" #: actions/designadminpanel.php:73 msgid "Design settings for this StatusNet site." -msgstr "" +msgstr "Design-Einstellungen für diese StatusNet-Website." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "Ungültige URL für das Logo" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Theme nicht verfügbar: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Logo ändern" -#: actions/designadminpanel.php:375 -#, fuzzy +#: actions/designadminpanel.php:380 msgid "Site logo" -msgstr "Einladen" +msgstr "Seitenlogo" -#: actions/designadminpanel.php:382 -#, fuzzy +#: actions/designadminpanel.php:387 msgid "Change theme" -msgstr "Ändern" +msgstr "Theme ändern" -#: actions/designadminpanel.php:399 -#, fuzzy +#: actions/designadminpanel.php:404 msgid "Site theme" -msgstr "Seitennachricht" +msgstr "Seitentheme" -#: actions/designadminpanel.php:400 -#, fuzzy +#: actions/designadminpanel.php:405 msgid "Theme for the site." -msgstr "Von der Seite abmelden" +msgstr "Theme dieser Seite." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Hintergrundbild ändern" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Hintergrund" -#: actions/designadminpanel.php:422 -#, fuzzy, php-format +#: actions/designadminpanel.php:427 +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "Du kannst ein Logo für Deine Gruppe hochladen." +msgstr "" +"Du kannst ein Hintergrundbild für Deine Gruppe hochladen. Die maximale " +"Dateigröße beträgt %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "An" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Aus" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "Hintergrundbild ein- oder ausschalten." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Farben ändern" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Inhalt" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 -#, fuzzy +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" -msgstr "Suchen" +msgstr "Seitenleiste" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Links" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standard-Design wiederherstellen" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Standard wiederherstellen" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -926,7 +927,7 @@ msgstr "Standard wiederherstellen" msgid "Save" msgstr "Speichern" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Design speichern" @@ -993,7 +994,7 @@ msgstr "Adresse" #: actions/emailsettings.php:105 msgid "Current confirmed email address." -msgstr "Aktuelle bestätigte E-Mail Adresse" +msgstr "Aktuelle bestätigte E-Mail-Adresse." #: actions/emailsettings.php:107 actions/emailsettings.php:140 #: actions/imsettings.php:108 actions/smssettings.php:115 @@ -1115,8 +1116,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 "" -"Ein Bestätigungscode wurde an die angegebene E-Mail Adresse geschickt. " -"Überprüfen Sie Ihren Posteingang (auch den Spamordner!) für den Code und " +"Ein Bestätigungscode wurde an die angegebene E-Mail-Adresse geschickt. " +"Überprüfe deinen Posteingang (auch den Spamordner!) für den Code und " "Anweisungen, wie dieser benutzt wird." #: actions/emailsettings.php:379 actions/imsettings.php:351 @@ -1126,7 +1127,7 @@ msgstr "Keine ausstehende Bestätigung, die abgebrochen werden kann." #: actions/emailsettings.php:383 actions/imsettings.php:355 msgid "That is the wrong IM address." -msgstr "Das ist die falsche IM Adresse." +msgstr "Das ist die falsche IM-Adresse." #: actions/emailsettings.php:395 actions/imsettings.php:367 #: actions/smssettings.php:386 @@ -1245,7 +1246,6 @@ msgid "Not expecting this response!" msgstr "Unerwartete Antwort!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." msgstr "Aufgeführte Nutzer existiert nicht." @@ -1258,19 +1258,16 @@ msgid "That user has blocked you from subscribing." msgstr "Dieser Benutzer erlaubt dir nicht ihn zu abonnieren." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Nicht autorisiert." +msgstr "Du bist nicht autorisiert." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." msgstr "Konnte Anfrage-Token nicht in Zugriffs-Token umwandeln." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Unbekannte OMB-Protokollversion." +msgstr "Service nutzt unbekannte OMB-Protokollversion." #: actions/finishremotesubscribe.php:138 lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -1287,9 +1284,8 @@ msgid "No such file." msgstr "Datei nicht gefunden." #: actions/getfile.php:79 -#, fuzzy msgid "Cannot read file." -msgstr "Daten verloren." +msgstr "Datei konnte nicht gelesen werden." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 @@ -1321,9 +1317,8 @@ msgid "User is not a member of group." msgstr "Nutzer ist kein Mitglied dieser Gruppe." #: actions/groupblock.php:136 actions/groupmembers.php:314 -#, fuzzy msgid "Block user from group" -msgstr "Benutzer blockieren" +msgstr "Benutzerzugang zu der Gruppe blockieren" #: actions/groupblock.php:162 #, php-format @@ -1334,9 +1329,8 @@ msgid "" msgstr "" #: actions/groupblock.php:178 -#, fuzzy msgid "Do not block this user from this group" -msgstr "Liste der Benutzer in dieser Gruppe." +msgstr "Diesen Benutzerzugang nicht für diese Gruppe blockieren." #: actions/groupblock.php:179 msgid "Block this user from this group" @@ -1344,7 +1338,7 @@ msgstr "Diesen Nutzer von der Gruppe sperren" #: actions/groupblock.php:196 msgid "Database error blocking user from group." -msgstr "" +msgstr "Datenbank Fehler beim Versuch den Nutzer aus der Gruppe zu blockieren." #: actions/groupbyid.php:74 msgid "No ID" @@ -1356,7 +1350,7 @@ msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten." #: actions/groupdesignsettings.php:141 msgid "Group design" -msgstr "Gruppen Design" +msgstr "Gruppen-Design" #: actions/groupdesignsettings.php:152 msgid "" @@ -1364,38 +1358,36 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 -#, fuzzy +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." -msgstr "Konnte Benutzerdaten nicht aktualisieren." +msgstr "Konnte dein Design nicht aktualisieren." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 -#, fuzzy msgid "Unable to save your design settings!" -msgstr "Konnte Twitter Einstellungen nicht speichern!" +msgstr "Konnte die Design-Einstellungen nicht speichern!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." -msgstr "Design Einstellungen gespeichert." +msgstr "Design-Einstellungen gespeichert." #: actions/grouplogo.php:139 actions/grouplogo.php:192 msgid "Group logo" msgstr "Gruppen-Logo" #: actions/grouplogo.php:150 -#, fuzzy, php-format +#, php-format 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." +msgstr "" +"Du kannst ein Logo für Deine Gruppe hochladen. Die maximale Dateigröße ist %" +"s." #: actions/grouplogo.php:362 -#, fuzzy msgid "Pick a square area of the image to be the logo." -msgstr "" -"Wähle eine quadratische Fläche aus dem Bild, um dein Avatar zu speichern" +msgstr "Wähle eine quadratische Fläche aus dem Bild, um das Logo zu speichern." #: actions/grouplogo.php:396 msgid "Logo updated." @@ -1445,12 +1437,12 @@ msgid "Updates from members of %1$s on %2$s!" msgstr "Aktualisierungen von %1$s auf %2$s!" #: 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 "" -"Durchsuche die Namen, Orten oder Interessen der Nutzer von %%site.name%%. " +"Durchsuche die Namen, Orte oder Interessen der Nutzer von %%site.name%%. " "Trenne mehrere Suchbegriffe durch Leerzeichen. Ein Suchbegriff muss aus " "mindestens 3 Zeichen bestehen." @@ -1469,6 +1461,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Wenn du die Gruppe die dich interessiert nicht finden kannst, dann [erstelle " +"sie](%%action.newgroup%%) doch einfach." #: actions/groupsearch.php:85 #, php-format @@ -1503,7 +1497,7 @@ msgstr "Neue Gruppe erstellen" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "Nur Gruppen Administratoren können die Sperrung von Nutzern aufheben." +msgstr "Nur Administratoren können Gruppenmitglieder entsperren." #: actions/groupunblock.php:95 msgid "User is not blocked from group." @@ -1515,7 +1509,7 @@ msgstr "Fehler beim Freigeben des Benutzers." #: actions/imsettings.php:59 msgid "IM Settings" -msgstr "IM Einstellungen" +msgstr "IM-Einstellungen" #: actions/imsettings.php:70 #, php-format @@ -1527,9 +1521,8 @@ msgstr "" "senden. Stelle deine Adresse und Einstellungen unten ein." #: actions/imsettings.php:89 -#, fuzzy msgid "IM is not available." -msgstr "Diese Seite liegt in nicht verfügbar in einem " +msgstr "IM ist nicht verfügbar." #: actions/imsettings.php:106 msgid "Current confirmed Jabber/GTalk address." @@ -1542,12 +1535,12 @@ msgid "" "message with further instructions. (Did you add %s to your buddy list?)" msgstr "" "Warte auf Bestätigung dieser Adresse. Eine Nachricht mit weiteren Anweisung " -"sollte in deinem Jabber/GTalk Konto eingehen. (Hast du %s zu deiner " -"Freundeliste hinzugefügt?)" +"sollte in deinem Jabber/GTalk-Konto eingehen. (Hast du %s zu deiner " +"Freundesliste hinzugefügt?)" #: actions/imsettings.php:124 msgid "IM Address" -msgstr "IM Adresse" +msgstr "IM-Adresse" #: actions/imsettings.php:126 #, php-format @@ -1555,8 +1548,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- oder GoogleTalk-Adresse, z.B. \"UserName@example.org\". Aber " -"versichere dich zuerst, dass du %s in deine Kontaktliste in deinem IM " +"Jabber- oder GoogleTalk-Adresse, beispielsweise „Benutzername@example.org“. " +"Aber versichere dich zuerst, dass du %s in deine Kontaktliste in deinem IM-" "Programm oder GTalk aufgenommen hast." #: actions/imsettings.php:143 @@ -1565,7 +1558,7 @@ msgstr "Schicke mir Nachrichten mittels Jabber/GTalk." #: actions/imsettings.php:148 msgid "Post a notice when my Jabber/GTalk status changes." -msgstr "Schicke eine Nachricht, wenn sich mein Jabber/GTalk Status verändert." +msgstr "Schicke eine Nachricht, wenn sich mein Jabber/GTalk-Status verändert." #: actions/imsettings.php:153 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." @@ -1603,7 +1596,7 @@ msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." msgstr "" -"Ein Bestätigungscode wurde an die IM Adresse geschickt, die du hinzugefügt " +"Ein Bestätigungscode wurde an die IM-Adresse geschickt, die du hinzugefügt " "hast. Du musst zulassen, dass %s dir Nachrichten schicken darf." #: actions/imsettings.php:387 @@ -1689,7 +1682,7 @@ msgstr "E-Mail-Adressen" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" msgstr "" -"Addressen von Freunden, die Du einladen möchtest. (Jeweils eine Addresse pro " +"Adressen von Freunden, die Du einladen möchtest. (Jeweils eine Adresse pro " "Zeile)" #: actions/invite.php:192 @@ -1702,7 +1695,7 @@ msgstr "" "Wenn du möchtest kannst du zu der Einladung eine persönliche Nachricht " "anfügen." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Senden" @@ -1812,23 +1805,22 @@ msgid "Already logged in." msgstr "Bereits angemeldet." #: actions/login.php:108 actions/login.php:118 -#, fuzzy msgid "Invalid or expired token." -msgstr "Ungültiger Nachrichteninhalt" +msgstr "Token ungültig oder abgelaufen." #: actions/login.php:146 msgid "Incorrect username or password." msgstr "Falscher Benutzername oder Passwort." #: actions/login.php:152 -#, fuzzy msgid "Error setting user. You are probably not authorized." -msgstr "Nicht autorisiert." +msgstr "" +"Fehler beim setzen des Benutzers. Du bist vermutlich nicht autorisiert." #: actions/login.php:207 actions/login.php:260 lib/action.php:458 #: lib/logingroupnav.php:79 msgid "Login" -msgstr "Einloggen" +msgstr "Anmelden" #: actions/login.php:246 msgid "Login to site" @@ -1862,18 +1854,17 @@ msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -"Bitte geben Sie aus Sicherheitsgründen ihren Benutzernamen und ihr Passwort " -"ein, bevor die Änderungen an ihren Einstellungen übernommen werden." +"Bitte gebe aus Sicherheitsgründen deinen Benutzernamen und dein Passwort " +"ein, bevor die Änderungen an deinen Einstellungen übernommen werden." #: actions/login.php:289 -#, fuzzy, php-format +#, php-format msgid "" "Login with your username and password. Don't have a username yet? [Register]" "(%%action.register%%) a new account." msgstr "" "Melde dich mit Nutzernamen und Passwort an. Du hast noch keinen Nutzernamen? " -"[Registriere](%%action.register%%) ein neues Konto oder versuche es mit " -"[OpenID](%%action.openidlogin%%)." +"[Registriere](%%action.register%%) ein neues Konto." #: actions/makeadmin.php:91 msgid "Only an admin can make another user an admin." @@ -1882,7 +1873,7 @@ msgstr "Nur Administratoren können andere Nutzer zu Administratoren ernennen." #: actions/makeadmin.php:95 #, php-format msgid "%s is already an admin for group \"%s\"." -msgstr "%s ist bereits ein Administrator der Gruppe "%s"." +msgstr "%s ist bereits ein Administrator der Gruppe „%s“." #: actions/makeadmin.php:132 #, php-format @@ -1892,7 +1883,7 @@ msgstr "" #: actions/makeadmin.php:145 #, php-format msgid "Can't make %s an admin for group %s" -msgstr "" +msgstr "Konnte %s nicht zum Administrator der Gruppe %s machen" #: actions/microsummary.php:69 msgid "No current status" @@ -1965,9 +1956,9 @@ msgid "Text search" msgstr "Volltextsuche" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%s\" on %s" -msgstr "Suche im Stream nach \"%s\"" +msgstr "Suchergebnisse für „%s“ auf %s" #: actions/noticesearch.php:121 #, php-format @@ -1984,9 +1975,9 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Updates von %1$s auf %2$s!" +msgstr "Aktualisierungen mit „%s“" #: actions/noticesearchrss.php:98 #, php-format @@ -2018,16 +2009,15 @@ msgid "%1$s's status on %2$s" msgstr "%1$s Status auf %2$s" #: actions/oembed.php:157 -#, fuzzy msgid "content type " -msgstr "Verbinden" +msgstr "Content-Typ " #: actions/oembed.php:160 msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Kein unterstütztes Datenformat." @@ -2060,9 +2050,8 @@ msgid "Automatic shortening service to use." msgstr "URL-Auto-Kürzungs-Dienst." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "Profil Einstellungen" +msgstr "Profil-Einstellungen ansehen" #: actions/othersettings.php:123 msgid "Show or hide profile designs." @@ -2070,7 +2059,7 @@ msgstr "" #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." -msgstr "URL-Auto-Kürzungs-Dienst ist zu lange (max. 50 Zeichen)" +msgstr "URL-Auto-Kürzungs-Dienst ist zu lang (max. 50 Zeichen)." #: actions/outbox.php:58 #, php-format @@ -2157,9 +2146,9 @@ msgid "Path and server settings for this StatusNet site." msgstr "" #: actions/pathsadminpanel.php:140 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s" -msgstr "Diese Seite liegt in nicht verfügbar in einem " +msgstr "Theme-Verzeichnis nicht lesbar: %s" #: actions/pathsadminpanel.php:146 #, php-format @@ -2178,18 +2167,16 @@ msgstr "" #: actions/pathsadminpanel.php:212 actions/siteadminpanel.php:58 #: lib/adminpanelaction.php:299 -#, fuzzy msgid "Site" -msgstr "Einladen" +msgstr "Seite" #: actions/pathsadminpanel.php:216 msgid "Path" msgstr "" #: actions/pathsadminpanel.php:216 -#, fuzzy msgid "Site path" -msgstr "Seitennachricht" +msgstr "Seitenpfad" #: actions/pathsadminpanel.php:220 msgid "Path to locales" @@ -2216,24 +2203,20 @@ msgid "Theme directory" msgstr "" #: actions/pathsadminpanel.php:247 -#, fuzzy msgid "Avatars" -msgstr "Avatar" +msgstr "Avatare" #: actions/pathsadminpanel.php:252 -#, fuzzy msgid "Avatar server" -msgstr "Avatar-Einstellungen" +msgstr "Avatar-Server" #: actions/pathsadminpanel.php:256 -#, fuzzy msgid "Avatar path" -msgstr "Avatar aktualisiert." +msgstr "Avatarpfad" #: actions/pathsadminpanel.php:260 -#, fuzzy msgid "Avatar directory" -msgstr "Avatar aktualisiert." +msgstr "Avatarverzeichnis" #: actions/pathsadminpanel.php:269 msgid "Backgrounds" @@ -2252,9 +2235,8 @@ msgid "Background directory" msgstr "" #: actions/pathsadminpanel.php:297 -#, fuzzy msgid "Save paths" -msgstr "Seitennachricht" +msgstr "Speicherpfade" #: actions/peoplesearch.php:52 #, php-format @@ -2262,7 +2244,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 "" -"Durchsuche die Namen, Orten oder Interessen der Nutzer von %%site.name%%. " +"Durchsuche die Namen, Orte oder Interessen der Nutzer von %%site.name%%. " "Trenne mehrere Suchbegriffe durch Leerzeichen. Ein Suchbegriff muss aus " "mindestens 3 Zeichen bestehen." @@ -2375,7 +2357,7 @@ msgstr "Zeitzone" #: actions/profilesettings.php:155 msgid "What timezone are you normally in?" -msgstr "In welcher Zeitzone befinden Sie sich üblicherweise?" +msgstr "In welcher Zeitzone befindest du dich üblicherweise?" #: actions/profilesettings.php:160 msgid "" @@ -2437,19 +2419,16 @@ msgid "Public timeline" msgstr "Öffentliche Zeitleiste" #: actions/public.php:151 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "Feed des öffentlichen Streams" +msgstr "Feed des öffentlichen Streams (RSS 1.0)" #: actions/public.php:155 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "Feed des öffentlichen Streams" +msgstr "Feed des öffentlichen Streams (RSS 2.0)" #: actions/public.php:159 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Feed des öffentlichen Streams" +msgstr "Feed des öffentlichen Streams (Atom)" #: actions/public.php:179 #, php-format @@ -2478,14 +2457,15 @@ msgid "" msgstr "" #: actions/public.php:238 -#, fuzzy, php-format +#, php-format msgid "" "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"Dies ist %%site.name%%, ein [mikro-blogging] (http://de.wikipedia.org/wiki/" -"Mikro-blogging) Dienst " +"Dies ist %%site.name%%, ein [Mikro-blogging-Dienst](http://de.wikipedia.org/" +"wiki/Mikro-blogging) basierend auf der freien Software [StatusNet](http://" +"status.net/)." #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -2643,9 +2623,8 @@ msgid "Sorry, only invited people can register." msgstr "Es tut uns leid, zum Registrieren benötigst du eine Einladung." #: actions/register.php:92 -#, fuzzy msgid "Sorry, invalid invitation code." -msgstr "Fehler beim Bestätigungscode." +msgstr "Entschuldigung, ungültiger Bestätigungscode." #: actions/register.php:112 msgid "Registration successful" @@ -4545,11 +4524,7 @@ msgid "" msgstr "" "Du kannst dein persönliches Avatar hochladen. Die maximale Dateigröße ist %s." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5026,7 +5001,7 @@ msgstr "Versende eine direkte Nachricht" msgid "To" msgstr "An" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "Verfügbare Zeichen" @@ -5041,11 +5016,11 @@ msgstr "Nachricht versenden" msgid "What's up, %s?" msgstr "Was ist los, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5327,7 +5302,12 @@ msgstr "Die Gegenseite konnte Dich nicht abonnieren." msgid "Not subscribed!" msgstr "Nicht abonniert!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Konnte Abonnement nicht löschen." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Konnte Abonnement nicht löschen." diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 6ab4721c21..07384974dc 100644 --- a/locale/el/LC_MESSAGES/statusnet.po +++ b/locale/el/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Greek # +# Author@translatewiki.net: Omnipaedista # -- # 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: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:21+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:03+0000\n" "Language-Team: Greek\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: el\n" "X-Message-Group: out-statusnet\n" @@ -47,7 +48,7 @@ msgstr "Αδύνατη η αποθήκευση του προφίλ." #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77 #: lib/subs.php:34 lib/subs.php:116 msgid "No such user." -msgstr "" +msgstr "Κανένας τέτοιος χρήστης." #: actions/all.php:84 #, fuzzy, php-format @@ -183,7 +184,12 @@ msgstr "" msgid "Could not save profile." msgstr "Απέτυχε η αποθήκευση του προφίλ." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Απέτυχε η ενημέρωση του χρήστη." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -398,14 +404,14 @@ msgid "%s groups" msgstr "" #: actions/apigrouplistall.php:94 -#, fuzzy, php-format +#, php-format msgid "groups on %s" -msgstr "Βρες ομάδες στο site" +msgstr "ομάδες του χρήστη %s" #: actions/apigrouplist.php:95 -#, fuzzy, php-format +#, php-format msgid "%s's groups" -msgstr "Ομάδες χρηστών" +msgstr "ομάδες των χρηστών %s" #: actions/apigrouplist.php:103 #, fuzzy, php-format @@ -460,9 +466,9 @@ msgstr "" #: actions/apitimelinegroup.php:108 actions/apitimelineuser.php:117 #: actions/grouprss.php:131 actions/userrss.php:90 -#, fuzzy, php-format +#, php-format msgid "%s timeline" -msgstr "Χρονοδιάγραμμα του χρήστη %s" +msgstr "χρονοδιάγραμμα του χρήστη %s" #: actions/apitimelinegroup.php:116 actions/apitimelineuser.php:125 #: actions/userrss.php:92 @@ -538,9 +544,8 @@ msgstr "" #: actions/avatarsettings.php:119 actions/avatarsettings.php:194 #: actions/grouplogo.php:251 -#, fuzzy msgid "Avatar settings" -msgstr "Ρυθμίσεις OpenID" +msgstr "Ρυθμίσεις του άβαταρ" #: actions/avatarsettings.php:126 actions/avatarsettings.php:202 #: actions/grouplogo.php:199 actions/grouplogo.php:259 @@ -612,9 +617,8 @@ msgstr "Ρυθμίσεις OpenID" #: actions/groupdesignsettings.php:84 actions/grouplogo.php:86 #: actions/groupmembers.php:76 actions/grouprss.php:91 #: actions/joingroup.php:76 actions/showgroup.php:121 -#, fuzzy msgid "No nickname" -msgstr "Νέο ψευδώνυμο" +msgstr "Κανένα ψευδώνυμο" #: actions/blockedfromgroup.php:80 actions/editgroup.php:96 #: actions/groupbyid.php:83 actions/groupdesignsettings.php:97 @@ -669,7 +673,7 @@ msgstr "" #: actions/block.php:143 actions/deletenotice.php:145 #: actions/deleteuser.php:147 actions/groupblock.php:178 msgid "No" -msgstr "" +msgstr "Όχι" #: actions/block.php:143 actions/deleteuser.php:147 #, fuzzy @@ -737,9 +741,8 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "" #: actions/conversation.php:99 -#, fuzzy msgid "Conversation" -msgstr "Τοποθεσία" +msgstr "Συζήτηση" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:216 lib/searchgroupnav.php:82 @@ -825,106 +828,106 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Αλλάξτε τον κωδικό σας" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Αλλαγή" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Αλλαγή" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Αλλάξτε τον κωδικό σας" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Σύνδεση" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Σύνδεση" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -934,7 +937,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1370,19 +1373,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Απέτυχε η ενημέρωση του χρήστη." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Οι προτιμήσεις αποθηκεύτηκαν" @@ -1688,7 +1691,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "" @@ -1979,8 +1982,8 @@ msgstr "Σύνδεση" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -2969,9 +2972,8 @@ msgid "" msgstr "" #: actions/showgroup.php:482 -#, fuzzy msgid "Admins" -msgstr "Διαχειριστής" +msgstr "Διαχειριστές" #: actions/showmessage.php:81 msgid "No such message." @@ -3192,9 +3194,8 @@ msgid "Use fancy (more readable and memorable) URLs?" msgstr "" #: actions/siteadminpanel.php:331 -#, fuzzy msgid "Access" -msgstr "Αποδοχή" +msgstr "Πρόσβαση" #: actions/siteadminpanel.php:334 msgid "Private" @@ -4431,11 +4432,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4690,12 +4687,12 @@ msgid "" msgstr "" #: lib/mail.php:254 -#, fuzzy, php-format +#, php-format msgid "Location: %s\n" msgstr "Τοποθεσία: %s\n" #: lib/mail.php:256 -#, fuzzy, php-format +#, php-format msgid "Homepage: %s\n" msgstr "Αρχική σελίδα: %s\n" @@ -4887,7 +4884,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 ή περισσότεροι χαρακτήρες" @@ -4901,11 +4898,11 @@ msgstr "" msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5177,7 +5174,12 @@ msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές msgid "Not subscribed!" msgstr "Απέτυχε η συνδρομή." -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Απέτυχε η διαγραφή συνδρομής." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Απέτυχε η διαγραφή συνδρομής." diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index fb598943c8..d31e8a7ed6 100644 --- a/locale/en_GB/LC_MESSAGES/statusnet.po +++ b/locale/en_GB/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:24+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:06+0000\n" "Language-Team: British English\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: en-gb\n" "X-Message-Group: out-statusnet\n" @@ -181,7 +181,12 @@ msgstr "User has no profile." msgid "Could not save profile." msgstr "Couldn't save profile." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Couldn't update user." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Block user failed." @@ -818,106 +823,106 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Invalid size." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "This page is not available in a " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Change logo" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Invite" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Change" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Site theme" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Logout from the site" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "You can upload a logo image for your group." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Change colours" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Connect" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Search" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Links" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -927,7 +932,7 @@ msgstr "" msgid "Save" msgstr "Save" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1365,20 +1370,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Couldn't update user." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Unable to save your Twitter settings!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Sync preferences saved." @@ -1694,7 +1699,7 @@ msgstr "Personal message" msgid "Optionally add a personal message to the invitation." msgstr "Optionally add a personal message to the invitation." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Send" @@ -2016,8 +2021,8 @@ msgstr "Connect" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Not a supported data format." @@ -4501,11 +4506,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "You can upload your personal avatar. The maximum file size is %s." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Bad default colour settings: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4971,7 +4972,7 @@ msgstr "Send a direct notice" msgid "To" msgstr "To" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Available characters" @@ -4984,11 +4985,11 @@ msgstr "Send a notice" msgid "What's up, %s?" msgstr "What's up, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5259,7 +5260,12 @@ msgstr "Could not subscribe other to you." msgid "Not subscribed!" msgstr "Not subscribed!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Couldn't delete subscription." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Couldn't delete subscription." diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index 393a3c602a..2493b24bc6 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:28+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:09+0000\n" "Language-Team: Spanish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: es\n" "X-Message-Group: out-statusnet\n" @@ -188,7 +188,12 @@ msgstr "El usuario no tiene un perfil." msgid "Could not save profile." msgstr "No se pudo guardar el perfil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "No se pudo actualizar el usuario." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Falló bloquear usuario." @@ -840,107 +845,107 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Tamaño inválido." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Esta página no está disponible en un " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Cambiar colores" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Invitar" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Cambiar" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Aviso de sitio" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Salir de sitio" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Puedes cargar una imagen de logo para tu grupo." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Cambiar colores" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Contenido" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Buscar" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Vínculos" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -950,7 +955,7 @@ msgstr "" msgid "Save" msgstr "Guardar" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1401,20 +1406,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "No se pudo actualizar el usuario." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "¡No se pudo guardar tu configuración de Twitter!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Preferencias de sincronización guardadas." @@ -1740,7 +1745,7 @@ msgstr "Mensaje Personal" msgid "Optionally add a personal message to the invitation." msgstr "Opcionalmente añada un mensaje personalizado a su invitación." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Enviar" @@ -2071,8 +2076,8 @@ msgstr "Conectarse" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "No es un formato de dato soportado" @@ -4620,11 +4625,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Puedes cargar tu avatar personal." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5092,7 +5093,7 @@ msgstr "Enviar un aviso directo" msgid "To" msgstr "Para" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "Caracteres disponibles" @@ -5107,11 +5108,11 @@ msgstr "Enviar un aviso" msgid "What's up, %s?" msgstr "¿Qué tal, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5388,7 +5389,12 @@ msgstr "No se pudo suscribir otro a ti." msgid "Not subscribed!" msgstr "¡No estás suscrito!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "No se pudo eliminar la suscripción." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "No se pudo eliminar la suscripción." diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index e5e8af7958..dbc8f1f4b3 100644 --- a/locale/fi/LC_MESSAGES/statusnet.po +++ b/locale/fi/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:32+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:12+0000\n" "Language-Team: Finnish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fi\n" "X-Message-Group: out-statusnet\n" @@ -188,7 +188,12 @@ msgstr "Käyttäjällä ei ole profiilia." msgid "Could not save profile." msgstr "Ei voitu tallentaa profiilia." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Et voi lopettaa itsesi tilausta!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Käyttäjän esto epäonnistui." @@ -828,107 +833,107 @@ msgstr "Ulkoasu" msgid "Design settings for this StatusNet site." msgstr "Ulkoasuasetukset tälle StatusNet palvelulle." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Koko ei kelpaa." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Pikaviestin ei ole käytettävissä." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Vaihda salasanasi" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Kutsu" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Vaihda" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Palvelun ilmoitus" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Kirjaudu ulos palvelusta" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Vaihda tautakuva" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Tausta" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, 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." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "On" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Off" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Vaihda väriä" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Sisältö" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Haku" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Teksti" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Linkit" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Käytä oletusasetuksia" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -938,7 +943,7 @@ msgstr "" msgid "Save" msgstr "Tallenna" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1373,18 +1378,18 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Ei voitu päivittää sinun sivusi ulkoasua." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings!" msgstr "Ei voitu tallentaa sinun ulkoasuasetuksia!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Ulkoasuasetukset tallennettu." @@ -1703,7 +1708,7 @@ msgstr "Henkilökohtainen viesti" msgid "Optionally add a personal message to the invitation." msgstr "Voit myös lisätä oman viestisi kutsuun" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Lähetä" @@ -2029,8 +2034,8 @@ msgstr "Yhdistä" msgid "Only " msgstr "Vain " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Tuo ei ole tuettu tietomuoto." @@ -4551,11 +4556,7 @@ 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:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5025,7 +5026,7 @@ msgstr "Lähetä suora viesti" msgid "To" msgstr "Vastaanottaja" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Sallitut merkit" @@ -5038,11 +5039,11 @@ msgstr "Lähetä päivitys" msgid "What's up, %s?" msgstr "Mitä teet juuri nyt, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5322,7 +5323,12 @@ msgstr "Toista ei voitu asettaa tilaamaan sinua." msgid "Not subscribed!" msgstr "Ei ole tilattu!." -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Ei voitu poistaa tilausta." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Ei voitu poistaa tilausta." diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index cb3c85af5f..a3e47142e6 100644 --- a/locale/fr/LC_MESSAGES/statusnet.po +++ b/locale/fr/LC_MESSAGES/statusnet.po @@ -6,7 +6,6 @@ # Author@translatewiki.net: Jean-Frédéric # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Peter17 -# Author@translatewiki.net: Zetud # -- # This file is distributed under the same license as the StatusNet package. # @@ -14,12 +13,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:36+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:15+0000\n" "Language-Team: French\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fr\n" "X-Message-Group: out-statusnet\n" @@ -96,7 +95,7 @@ msgid "" "something yourself." msgstr "" "Essayez de vous abonner à plus d’utilisateurs, de vous [inscrire à un groupe]" -"(%%action.groups%%) ou de publier quelque chose vous-même." +"(%%action.groups%%) ou de poster quelque chose vous-même." #: actions/all.php:134 #, php-format @@ -104,8 +103,8 @@ msgid "" "You can try to [nudge %s](../%s) from his profile or [post something to his " "or her attention](%%%%action.newnotice%%%%?status_textarea=%s)." msgstr "" -"Vous pouvez essayer de [donner un coup de coude à %s](../%s) depuis son " -"profil ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?" +"Vous pouvez essayer de [faire un clin d’œil à %s](../%s) depuis son profil " +"ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?" "status_textarea=%s)." #: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202 @@ -114,8 +113,8 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " "post a notice to his or her attention." msgstr "" -"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et ensuite " -"envoyer un coup de coude à %s ou poster quelque chose à son intention." +"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et ensuite faire " +"un clin d’œil à %s ou poster un avis à son intention." #: actions/all.php:165 msgid "You and friends" @@ -197,7 +196,12 @@ msgstr "Aucun profil ne correspond à cet utilisateur." msgid "Could not save profile." msgstr "Impossible d’enregistrer le profil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Vous ne pouvez pas ne plus vous suivre vous-même !" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Le blocage de l’utilisateur a échoué." @@ -268,7 +272,7 @@ msgstr "Aucun statut trouvé avec cet identifiant. " #: actions/apifavoritecreate.php:119 msgid "This status is already a favorite!" -msgstr "Ce statut a déjà été ajouté à vos favoris !" +msgstr "Cet avis a déjà été ajouté à vos favoris !" #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176 msgid "Could not create favorite." @@ -276,7 +280,7 @@ msgstr "Impossible de créer le favori." #: actions/apifavoritedestroy.php:122 msgid "That status is not a favorite!" -msgstr "Ce statut n’est pas un favori !" +msgstr "Cet avis n’est pas un favori !" #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 msgid "Could not delete favorite." @@ -455,7 +459,7 @@ msgstr "Non trouvé" #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -"La taille maximale du statut est de %d caractères, en incluant l’URL de la " +"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 @@ -502,12 +506,12 @@ msgstr "Activité publique %s" #: actions/apitimelinepublic.php:110 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "%s statuts " +msgstr "%s statuts de tout le monde !" #: actions/apitimelinetag.php:101 actions/tag.php:66 #, php-format msgid "Notices tagged with %s" -msgstr "Statuts marqués avec %s" +msgstr "Avis marqués avec %s" #: actions/apitimelinetag.php:107 actions/tagrss.php:64 #, php-format @@ -758,11 +762,11 @@ msgstr "Conversation" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:216 lib/searchgroupnav.php:82 msgid "Notices" -msgstr "Statuts" +msgstr "Avis" #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." -msgstr "Statut non trouvé." +msgstr "Avis non trouvé." #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69 @@ -775,7 +779,7 @@ msgstr "Non connecté." #: actions/deletenotice.php:71 msgid "Can't delete this notice." -msgstr "Impossible de supprimer ce statut." +msgstr "Impossible de supprimer cet avis." #: actions/deletenotice.php:103 msgid "" @@ -787,11 +791,11 @@ msgstr "" #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" -msgstr "Supprimer ce statut" +msgstr "Supprimer cet avis" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "Êtes-vous sûr(e) de vouloir supprimer ce statut ?" +msgstr "Êtes-vous sûr(e) de vouloir supprimer cet avis ?" #: actions/deletenotice.php:145 msgid "Do not delete this notice" @@ -799,7 +803,7 @@ msgstr "Ne pas supprimer cet avis" #: actions/deletenotice.php:146 lib/noticelist.php:550 msgid "Delete this notice" -msgstr "Supprimer ce statut" +msgstr "Supprimer cet avis" #: actions/deletenotice.php:157 msgid "There was a problem with your session token. Try again, please." @@ -840,45 +844,45 @@ msgstr "Conception" msgid "Design settings for this StatusNet site." msgstr "Paramètres de conception pour ce site StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "URL du logo invalide." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Le thème n'est pas disponible : %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Modifier le logo" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Logo du site" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Modifier le thème" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Thème du site" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Thème pour le site." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Changer l’image d’arrière plan" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Arrière plan" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -887,55 +891,55 @@ msgstr "" "Vous pouvez importer une image d'arrière plan pour ce site. La taille " "maximale du fichier est de %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Activé" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Désactivé" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 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:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Répéter l’image d’arrière plan" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Modifier les couleurs" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Contenu" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barre latérale" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texte" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Liens" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Utiliser les valeurs par défaut" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaurer les conceptions par défaut" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Revenir aux valeurs par défaut" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -945,13 +949,13 @@ msgstr "Revenir aux valeurs par défaut" msgid "Save" msgstr "Enregistrer" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Sauvegarder la conception" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "Ce statut n’est pas un favori !" +msgstr "Cet avis n’est pas un favori !" #: actions/disfavor.php:94 msgid "Add to favorites" @@ -1052,7 +1056,7 @@ msgstr "Courriel entrant" #: actions/emailsettings.php:138 actions/smssettings.php:157 msgid "Send email to this address to post new notices." -msgstr "Écrivez à cette adresse courriel pour publier de nouveaux statuts. " +msgstr "Écrivez à cette adresse courriel pour poster de nouveaux avis. " #: actions/emailsettings.php:145 actions/smssettings.php:162 msgid "Make a new email address for posting to; cancels the old one." @@ -1074,7 +1078,7 @@ msgstr "Avertissez-moi par courriel des nouveaux abonnements." #: actions/emailsettings.php:163 msgid "Send me email when someone adds my notice as a favorite." msgstr "" -"Envoyez-moi un courriel quand un utilisateur ajoute un de mes statuts à ses " +"Envoyez-moi un courriel quand un utilisateur ajoute un de mes avis à ses " "favoris." #: actions/emailsettings.php:169 @@ -1091,7 +1095,7 @@ msgstr "Autoriser mes amis à m’envoyer des courriels et des clins d’œil." #: actions/emailsettings.php:185 msgid "I want to post notices by email." -msgstr "Je veux envoyer mes statuts par courriel." +msgstr "Je veux envoyer mes avis par courriel." #: actions/emailsettings.php:191 msgid "Publish a MicroID for my email address." @@ -1178,30 +1182,30 @@ msgstr "Nouvelle adresse courriel ajoutée." #: actions/favorited.php:65 lib/popularnoticesection.php:88 #: lib/publicgroupnav.php:93 msgid "Popular notices" -msgstr "Statuts populaires" +msgstr "Avis populaires" #: actions/favorited.php:67 #, php-format msgid "Popular notices, page %d" -msgstr "Statuts populaires - page %d" +msgstr "Avis populaires - page %d" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." -msgstr "Statuts les plus populaires sur le site en ce moment." +msgstr "Les avis les plus populaires sur le site en ce moment." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" -"Les statuts favoris apparaissent sur cette page mais personne ne n’en a mis " -"un en favori actuellement." +"Les avis favoris apparaissent sur cette page mais personne n’a mis d’avis en " +"favori pour le moment." #: 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 "" -"Soyez le premier à un statut dans vos favoris en cliquant sur le bouton " -"favori à côté d’un statut que vous aimez." +"Soyez le premier à ajouter un avis dans vos favoris en cliquant sur le " +"bouton favori à côté d’un avis que vous aimez." #: actions/favorited.php:156 #, php-format @@ -1216,7 +1220,7 @@ msgstr "" #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "Statuts favoris de %s" +msgstr "Avis favoris de %s" #: actions/favoritesrss.php:115 #, php-format @@ -1225,7 +1229,7 @@ msgstr "Mises à jour privilégiées par %1$s sur %2$s !" #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "Ce statut a déjà été ajouté à vos favoris !" +msgstr "Cet avis a déjà été ajouté à vos favoris !" #: actions/favor.php:92 lib/disfavorform.php:140 msgid "Disfavor favorite" @@ -1248,11 +1252,11 @@ msgstr "Les utilisateurs à ne pas manquer dans %s" #: actions/file.php:34 msgid "No notice id" -msgstr "Pas d’identifiant de statut" +msgstr "Pas d’identifiant d’avis" #: actions/file.php:38 msgid "No notice" -msgstr "Aucun statut" +msgstr "Aucun avis" #: actions/file.php:42 msgid "No attachments" @@ -1349,7 +1353,7 @@ msgid "" "group in the future." msgstr "" "Êtes-vous sûr(e) de vouloir bloquer l’utilisateur \"%s\" du groupe \"%s\"? " -"Ils seront supprimés du groupe, il leur sera interdit d’y publier, et de s’y " +"Ils seront supprimés du groupe, il leur sera interdit d’y poster, et de s’y " "abonner à l’avenir." #: actions/groupblock.php:178 @@ -1382,21 +1386,21 @@ msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" -"Personnalisez le style de votre groupe avec une image de fond et une palette " -"de couleur de votre choix." +"Personnalisez l’apparence de votre groupe avec une image d’arrière plan et " +"une palette de couleurs de votre choix" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Impossible de mettre à jour votre conception." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings!" msgstr "Impossible de sauvegarder les préférences de conception !" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Préférences de conception enregistrées." @@ -1520,11 +1524,11 @@ msgid "" "%%%%)" msgstr "" "Les groupes de %%%%site.name%%%% permettent de trouver et de parler avec des " -"personnes qui ont le même intérêt. Après avoir rejoint un groupe vous pouvez " -"envoyer des messages à tous les autres membres en utilisant la syntaxe « !" -"nomdugroupe ». Vous ne voyez aucun groupe qui vous intéresse ? Essayer d'en " -"[rechercher un](%%%%action.groupsearch%%%%) ou [commencez le votre !](%%%%" -"action.newgroup%%%%)" +"personnes qui ont des intérêts en commun avec vous. Après avoir rejoint un " +"groupe, vous pouvez envoyer des messages à tous les autres membres en " +"utilisant la syntaxe « !nomdugroupe ». Vous ne voyez aucun groupe qui vous " +"intéresse ? Essayez d’en [rechercher un](%%%%action.groupsearch%%%%) ou de " +"[créer le vôtre !](%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122 msgid "Create a new group" @@ -1590,12 +1594,12 @@ msgstr "" #: actions/imsettings.php:143 msgid "Send me notices through Jabber/GTalk." -msgstr "Envoyez-moi les statuts par Jabber/GTalk." +msgstr "Envoyez-moi les avis par Jabber/GTalk." #: actions/imsettings.php:148 msgid "Post a notice when my Jabber/GTalk status changes." msgstr "" -"Publier un statut chaque fois que mon statut est modifié dans Jabber/GTalk" +"Poster un avis chaque fois que mon statut est modifié dans Jabber/GTalk" #: actions/imsettings.php:153 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." @@ -1729,7 +1733,7 @@ msgstr "Message personnel" msgid "Optionally add a personal message to the invitation." msgstr "Ajouter un message personnel à l’invitation (optionnel)." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Envoyer" @@ -1977,11 +1981,11 @@ msgstr "Erreur Ajax" #: actions/newnotice.php:69 msgid "New notice" -msgstr "Nouveau statut" +msgstr "Nouvel avis" #: actions/newnotice.php:206 msgid "Notice posted" -msgstr "Statut publié" +msgstr "Avis publié" #: actions/noticesearch.php:68 #, php-format @@ -1989,7 +1993,7 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"Recherchez les statuts %%site.name%% par leur contenu. Séparez les termes de " +"Recherchez les avis %%site.name%% par leur contenu. Séparez les termes de " "recherche par des espaces. Ils doivent contenir au moins 3 caractères." #: actions/noticesearch.php:78 @@ -2047,7 +2051,7 @@ msgstr "Clin d’œil envoyé !" #: actions/oembed.php:79 actions/shownotice.php:100 msgid "Notice has no profile" -msgstr "Le statut n’a pas de profil" +msgstr "L’avis n’a pas de profil" #: actions/oembed.php:86 actions/shownotice.php:180 #, php-format @@ -2062,8 +2066,8 @@ msgstr "type de contenu " msgid "Only " msgstr "Seulement " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Format de données non supporté." @@ -2073,7 +2077,7 @@ msgstr "Recherche de personnes" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "Recherche de statut" +msgstr "Recherche d’avis" #: actions/othersettings.php:60 msgid "Other Settings" @@ -2302,12 +2306,12 @@ msgstr "Recherche de personnes" #: actions/peopletag.php:70 #, php-format msgid "Not a valid people tag: %s" -msgstr "Ce marquage est invalide : %s" +msgstr "Cette marque est invalide : %s" #: actions/peopletag.php:144 #, php-format msgid "Users self-tagged with %s - page %d" -msgstr "Utilisateurs marqués &s - page %d" +msgstr "Utilisateurs marqués par eux-mêmes %s - page %d" #: actions/postnotice.php:84 msgid "Invalid notice content" @@ -2317,8 +2321,7 @@ msgstr "Contenu invalide" #, php-format msgid "Notice license ‘%s’ is not compatible with site license ‘%s’." msgstr "" -"La licence des statuts « %s » n'est pas compatible avec la licence du site « %" -"s »." +"La licence des avis « %s » n'est pas compatible avec la licence du site « %s »." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2382,13 +2385,14 @@ msgstr "Indiquez votre emplacement, ex.: « Ville, État (ou région), Pays »" #: actions/tagother.php:209 lib/subscriptionlist.php:106 #: lib/subscriptionlist.php:108 lib/userprofile.php:209 msgid "Tags" -msgstr "Marquages" +msgstr "Marques" #: actions/profilesettings.php:140 msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" -"Marquages (tags) pour votre profil, séparés par des virgules ou des espaces" +"Marques pour vous-même (lettres, chiffres, -, ., et _), séparées par des " +"virgules ou des espaces" #: actions/profilesettings.php:144 actions/siteadminpanel.php:307 msgid "Language" @@ -2429,7 +2433,7 @@ msgstr "La langue est trop longue (255 caractères maximum)." #: actions/profilesettings.php:246 actions/tagother.php:178 #, php-format msgid "Invalid tag: \"%s\"" -msgstr "Marquage invalide : « %s »" +msgstr "Marque invalide : « %s »" #: actions/profilesettings.php:295 msgid "Couldn't update user for autosubscribe." @@ -2441,7 +2445,7 @@ msgstr "Impossible d’enregistrer le profil." #: actions/profilesettings.php:336 msgid "Couldn't save tags." -msgstr "Impossible d’enregistrer les marquages." +msgstr "Impossible d’enregistrer les marques." #: actions/profilesettings.php:344 lib/adminpanelaction.php:126 msgid "Settings saved." @@ -2524,17 +2528,18 @@ msgstr "" #: actions/publictagcloud.php:57 msgid "Public tag cloud" -msgstr "Nuage de mots clefs public" +msgstr "Nuage de marques public" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "Derniers marquages les plus populaires dans %s " +msgstr "Dernières marques les plus populaires sur %s " #: actions/publictagcloud.php:69 #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." -msgstr "Personne n'a encore posté un statuts avec une [marque](%%doc.tags%%)." +msgstr "" +"Personne n'a encore posté d’avis avec une [marque (hashtag)](%%doc.tags%%)." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" @@ -2551,7 +2556,7 @@ msgstr "" #: actions/publictagcloud.php:135 msgid "Tag cloud" -msgstr "Nuage de mots clefs" +msgstr "Nuage de marques" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -2724,7 +2729,7 @@ msgid "" "link up to friends and colleagues. " msgstr "" "Avec ce formulaire vous pouvez créer un nouveau compte. Vous pourrez ensuite " -"poster des statuts and et vous relier avec des amis et collègues. " +"poster des avis and et vous relier à des amis et collègues. " #: actions/register.php:424 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." @@ -2747,8 +2752,8 @@ msgstr "Courriel" #: actions/register.php:438 actions/register.php:442 msgid "Used only for updates, announcements, and password recovery" msgstr "" -"Utilisé uniquement pour les mises à jour de statut, les avertissements, et " -"la récupération de mot de passe" +"Utilisé uniquement pour les mises à jour, les notifications, et la " +"récupération de mot de passe" #: actions/register.php:449 msgid "Longer name, preferably your \"real\" name" @@ -2791,9 +2796,9 @@ msgstr "" "Félicitations, %s! Bienvenue dans %%%%site.name%%%%. Vous pouvez " "maintenant :\n" "\n" -"* Visiter [votre profil](%s) et publier votre premier statut.\n" +"* Visiter [votre profil](%s) et poster votre premier message.\n" "* Ajouter une adresse [Jabber/GTalk](%%%%action.imsettings%%%%) afin " -"d’envoyer et recevoir vos statuts par messagerie instantanée.\n" +"d’envoyer et recevoir vos avis par messagerie instantanée.\n" "* [Chercher des personnes](%%%%action.peoplesearch%%%%) que vous pourriez " "connaître ou qui partagent vos intêrets.\n" "* Mettre votre [profil](%%%%action.profilesettings%%%%) à jour pour en dire " @@ -2858,7 +2863,6 @@ msgid "Invalid profile URL (bad format)" msgstr "URL du profil invalide (mauvais format)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" "URL de profil invalide (aucun document YADIS ou définition XRDS invalide)." @@ -2903,8 +2907,8 @@ msgid "" "This is the timeline showing replies to %s but %s hasn't received a notice " "to his attention yet." msgstr "" -"Ceci est la chronologie des réponses à %s mais %s n'a encore reçu aucun " -"statut à son intention." +"Ceci est la chronologie des réponses à %s mais %s n’a encore reçu aucun avis " +"à son intention." #: actions/replies.php:203 #, php-format @@ -2912,8 +2916,9 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" -"Vous pouvez vous engager dans une conversation avec d'autres personnes, vous " -"abonner à plus de gens ou [joindre des groupes](%%action.groups%%)." +"Vous pouvez entamer une conversation avec d’autres utilisateurs, vous " +"abonner à plus de personnes ou vous [inscrire à des groupes](%%action.groups%" +"%)." #: actions/replies.php:205 #, php-format @@ -2921,8 +2926,8 @@ msgid "" "You can try to [nudge %s](../%s) or [post something to his or her attention]" "(%%%%action.newnotice%%%%?status_textarea=%s)." msgstr "" -"Vous pouvez essayer de [faire un clin d’œil à %s](../%s) ou de [publier " -"quelque chose à son attention](%%%%action.newnotice%%%%?status_textarea=%s)" +"Vous pouvez essayer de [faire un clin d’œil à %s](../%s) ou de [poster " +"quelque chose à son intention](%%%%action.newnotice%%%%?status_textarea=%s)" #: actions/repliesrss.php:72 #, php-format @@ -2988,7 +2993,7 @@ msgid "" "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 publier quelque chose " +"un compte](%%%%action.register%%%%), puis poster quelque chose " "d’intéressant, qui serait ajouté à ses favoris :)" #: actions/showfavorites.php:242 @@ -3139,22 +3144,22 @@ msgstr "%s - page %d" #: actions/showstream.php:122 #, php-format msgid "Notice feed for %s tagged %s (RSS 1.0)" -msgstr "Fil des statuts pour %s marqués %s (RSS 1.0)" +msgstr "Fil des avis pour %s marqués %s (RSS 1.0)" #: actions/showstream.php:129 #, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Flux des statuts de %s (RSS 1.0)" +msgstr "Flux des avis de %s (RSS 1.0)" #: actions/showstream.php:136 #, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Flux des statuts de %s (RSS 2.0)" +msgstr "Flux des avis de %s (RSS 2.0)" #: actions/showstream.php:143 #, php-format msgid "Notice feed for %s (Atom)" -msgstr "Flux des statuts de %s (Atom)" +msgstr "Flux des avis de %s (Atom)" #: actions/showstream.php:148 #, php-format @@ -3180,8 +3185,8 @@ msgid "" "You can try to nudge %s or [post something to his or her attention](%%%%" "action.newnotice%%%%?status_textarea=%s)." msgstr "" -"Vous pouvez essayer de faire un clin d’œil à %s ou de [publier quelque chose " -"à son attention](%%%%action.newnotice%%%%?status_textarea=%s)." +"Vous pouvez essayer de faire un clin d’œil à %s ou de [poster quelque chose " +"à son intention](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/showstream.php:234 #, php-format @@ -3194,8 +3199,8 @@ msgstr "" "**%s** possède un compte sur %%%%site.name%%%%, un service de [microblogging]" "(http://fr.wikipedia.org/wiki/Microblog) basé sur le logiciel libre " "[StatusNet](http://status.net/). [Inscrivez-vous maintenant](%%%%action." -"register%%%%) pour suivre les statuts de **%s** et bien plus ! ([En lire " -"plus](%%%%doc.help%%%%))" +"register%%%%) pour suivre les avis de **%s** et bien plus ! ([En lire plus](%" +"%%%doc.help%%%%))" #: actions/showstream.php:239 #, php-format @@ -3291,7 +3296,7 @@ msgstr "URL utilisée pour le lien de crédits au bas de chaque page" #: actions/siteadminpanel.php:284 msgid "Contact email address for your site" -msgstr "adresse de courriel de contact de votre site" +msgstr "Adresse de courriel de contact de votre site" #: actions/siteadminpanel.php:290 msgid "Local" @@ -3435,7 +3440,7 @@ msgstr "Limite de texte" #: actions/siteadminpanel.php:403 msgid "Maximum number of characters for notices." -msgstr "Nombre maximal de caractères pour les statuts." +msgstr "Nombre maximal de caractères pour les avis." #: actions/siteadminpanel.php:407 msgid "Dupe limit" @@ -3496,7 +3501,7 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" -"Envoyez-moi les statuts par SMS ; je comprends que cela pourrait affecter ma " +"Envoyez-moi les avis par SMS ; je comprends que cela pourrait affecter ma " "facture de téléphonie mobile." #: actions/smssettings.php:306 @@ -3568,7 +3573,7 @@ msgstr "Ceci n’est pas un utilisateur local." #: actions/subscribe.php:69 msgid "Subscribed" -msgstr "Souscrit" +msgstr "Abonné" #: actions/subscribers.php:50 #, php-format @@ -3582,12 +3587,12 @@ msgstr "Abonnés à %s - page &d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "Ces personnes suivent vos statuts." +msgstr "Ces personnes suivent vos avis." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "Ces personnes suivent les statuts de %s." +msgstr "Ces personnes suivent les avis de %s." #: actions/subscribers.php:108 msgid "" @@ -3623,12 +3628,12 @@ msgstr "Abonnements de %s - page %d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "Vous suivez les statuts de ces personnes. " +msgstr "Vous suivez les avis de ces personnes." #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "Les statuts de ces personnes sont suivis par %s." +msgstr "Les avis de ces personnes sont suivis par %s." #: actions/subscriptions.php:121 #, php-format @@ -3670,7 +3675,7 @@ msgstr "Aucun argument d’identification." #: actions/tagother.php:65 #, php-format msgid "Tag %s" -msgstr "Marquage %s" +msgstr "Marque %s" #: actions/tagother.php:77 lib/userprofile.php:75 msgid "User profile" @@ -3688,7 +3693,9 @@ msgstr "Marquer l’utilisateur" msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" -msgstr "Marquer cet utilisateur (séparer par des espaces ou des virgules)" +msgstr "" +"Marques pour cet utilisateur (lettres, chiffres, -, ., et _), séparées par " +"des virgules ou des espaces" #: actions/tagother.php:193 msgid "" @@ -3699,7 +3706,7 @@ msgstr "" #: actions/tagother.php:200 msgid "Could not save tags." -msgstr "Impossible d’enregistrer les marquages." +msgstr "Impossible d’enregistrer les marques." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." @@ -3709,26 +3716,26 @@ msgstr "" #: actions/tag.php:68 #, php-format msgid "Notices tagged with %s, page %d" -msgstr "Statuts marqués %s - page %d" +msgstr "Avis marqués %s - page %d" #: actions/tag.php:86 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Flux des statuts pour le marquage %s (RSS 1.0)" +msgstr "Flux des avis pour la marque %s (RSS 1.0)" #: actions/tag.php:92 #, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Flux des statuts pour le marquage %s (RSS 2.0)" +msgstr "Flux des avis pour la marque %s (RSS 2.0)" #: actions/tag.php:98 #, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Flux des statuts pour le marquage %s (Atom)" +msgstr "Flux des avis pour la marque %s (Atom)" #: actions/tagrss.php:35 msgid "No such tag." -msgstr "Aucun marquage trouvé." +msgstr "Cette marque n’existe pas." #: actions/twitapitrends.php:87 msgid "API method under construction." @@ -3762,7 +3769,7 @@ msgstr "Désabonné" #, php-format msgid "Listenee stream license ‘%s’ is not compatible with site license ‘%s’." msgstr "" -"La licence du flux auquel vous avez souscrit ‘%s’ n’est pas compatible avec " +"La licence du flux auquel vous êtes abonné(e) ‘%s’ n’est pas compatible avec " "la licence du site ‘%s’." #: actions/useradminpanel.php:58 lib/adminpanelaction.php:305 @@ -3865,8 +3872,8 @@ msgid "" "click “Reject”." msgstr "" "Veuillez vérifier ces détails pour vous assurer que vous souhaitez vous " -"abonner aux statuts de cet utilisateur. Si vous n’avez pas demandé à vous " -"abonner aux statuts de quelqu’un, cliquez « Rejeter »." +"abonner aux avis de cet utilisateur. Si vous n’avez pas demandé à vous " +"abonner aux avis de quelqu’un, cliquez « Rejeter »." #: actions/userauthorization.php:188 msgid "License" @@ -3887,7 +3894,7 @@ msgstr "Refuser" #: actions/userauthorization.php:212 msgid "Reject this subscription" -msgstr "Rejeter cette souscription" +msgstr "Rejeter cet abonnement" #: actions/userauthorization.php:225 msgid "No authorization request!" @@ -3929,12 +3936,13 @@ msgstr "L’URI de l’auditeur ‘%s’ n’a pas été trouvée" #: actions/userauthorization.php:301 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "L’URI à laquelle vous avez souscrit ‘%s’ est trop longue." +msgstr "L’URI à laquelle vous vous êtes abonné(e) ‘%s’ est trop longue." #: actions/userauthorization.php:307 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "L’URI à laquelle vous avez souscrit ‘%s’ est un utilisateur local." +msgstr "" +"L’URI à laquelle vous vous êtes abonné(e) ‘%s’ est un utilisateur local." #: actions/userauthorization.php:322 #, php-format @@ -4031,7 +4039,7 @@ msgstr "Impossible de mettre à jour le message avec un nouvel URI." #: classes/Notice.php:164 #, php-format msgid "DB error inserting hashtag: %s" -msgstr "Erreur de base de donnée en insérant le hashtag : %s" +msgstr "Erreur de base de donnée en insérant la marque (hashtag) : %s" #: classes/Notice.php:179 msgid "Problem saving notice. Too long." @@ -4039,14 +4047,14 @@ msgstr "Problème lors de l’enregistrement de l’avis ; trop long." #: classes/Notice.php:183 msgid "Problem saving notice. Unknown user." -msgstr "Erreur lors de l’enregistrement du statut. Utilisateur inconnu." +msgstr "Erreur lors de l’enregistrement de l’avis. Utilisateur inconnu." #: classes/Notice.php:188 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -"Trop de statuts, trop vite ! Prenez une pause et publiez à nouveau dans " -"quelques minutes." +"Trop d’avis, trop vite ! Faites une pause et publiez à nouveau dans quelques " +"minutes." #: classes/Notice.php:194 msgid "" @@ -4058,11 +4066,11 @@ msgstr "" #: classes/Notice.php:200 msgid "You are banned from posting notices on this site." -msgstr "Il vous est interdit de publier des statuts dans ce site." +msgstr "Il vous est interdit de poster des avis sur ce site." #: classes/Notice.php:265 classes/Notice.php:290 msgid "Problem saving notice." -msgstr "Problème lors de l’enregistrement du statut." +msgstr "Problème lors de l’enregistrement de l’avis." #: classes/Notice.php:1124 #, php-format @@ -4335,7 +4343,7 @@ msgstr "Fournisseur" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "Statuts sur lesquels cette pièce jointe apparait." +msgstr "Avis sur lesquels cette pièce jointe apparaît." #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" @@ -4384,15 +4392,15 @@ msgstr "" #: lib/command.php:152 lib/command.php:400 msgid "Notice with that id does not exist" -msgstr "Aucun statut avec cet identifiant n’existe" +msgstr "Aucun avis avec cet identifiant n’existe" #: lib/command.php:168 lib/command.php:416 lib/command.php:471 msgid "User has no last notice" -msgstr "Aucun statut récent pour cet utilisateur" +msgstr "Aucun avis récent pour cet utilisateur" #: lib/command.php:190 msgid "Notice marked as fave." -msgstr "Statut ajouté aux favoris." +msgstr "Avis ajouté aux favoris." #: lib/command.php:315 #, php-format @@ -4515,7 +4523,6 @@ msgstr[0] "Vous êtes membre de ce groupe :" msgstr[1] "Vous êtes membre de ces groupes :" #: lib/command.php:652 -#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4579,7 +4586,7 @@ msgstr "" "last - même effet que 'get'\n" "on - pas encore implémenté.\n" "off - pas encore implémenté.\n" -"nudge - rappeler à un utilisateur de publier.\n" +"nudge - clin d’œil : rappeler à un utilisateur de poster.\n" "invite - pas encore implémenté.\n" "track - pas encore implémenté.\n" "untrack - pas encore implémenté.\n" @@ -4611,11 +4618,11 @@ msgstr "IM" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "Suivi des statuts par messagerie instantanée" +msgstr "Suivi des avis par messagerie instantanée" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "Suivi des statuts par SMS" +msgstr "Suivi des avis par SMS" #: lib/dberroraction.php:60 msgid "Database error" @@ -4632,11 +4639,7 @@ msgstr "" "Vous pouvez importer votre image d’arrière plan personnelle. La taille " "maximale du fichier est de 2 Mo." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Mauvais paramètres de couleur par défaut : " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Les paramètre par défaut de la conception ont été restaurés." @@ -4674,7 +4677,7 @@ msgstr "Ami d’un ami" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "Filtrer les balises" +msgstr "Filtrer les marques" #: lib/galleryaction.php:131 msgid "All" @@ -4686,11 +4689,11 @@ msgstr "Sélectionner une marque à filtrer" #: lib/galleryaction.php:140 msgid "Tag" -msgstr "Marquer" +msgstr "Marque" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "Choissez un marquage pour réduire la liste" +msgstr "Choissez une marque pour réduire la liste" #: lib/galleryaction.php:143 msgid "Go" @@ -4770,7 +4773,7 @@ msgstr "Groupes avec le plus d'éléments publiés" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "Marquages des statuts du groupe %s" +msgstr "Marques dans les avis du groupe %s" #: lib/htmloutputter.php:103 msgid "This page is not available in a media type you accept" @@ -4889,7 +4892,7 @@ msgstr "" #: lib/mail.php:236 #, php-format msgid "%1$s is now listening to your notices on %2$s." -msgstr "%1$s suit maintenant vos statuts dans %2$s." +msgstr "%1$s suit maintenant vos avis sur %2$s." #: lib/mail.php:241 #, php-format @@ -4905,7 +4908,7 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s suit maintenant vos statuts sur %2$s.\n" +"%1$s suit maintenant vos avis sur %2$s.\n" "\n" "%3$s\n" "\n" @@ -4952,14 +4955,13 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"Une nouvelle adresse vous a été attribuée pour publier vos statuts dans %1" -"$s.\n" +"Une nouvelle adresse vous a été attribuée pour poster vos avis sur %1$s.\n" "\n" -"Écrivez à %2$s pour mettre à jour votre statut.\n" +"Écrivez à %2$s pour poster un nouvel avis.\n" "\n" "Plus d’info : %3$s.\n" "\n" -"Amicalement vôtre,\n" +"Cordialement,\n" "%4$s" #: lib/mail.php:413 @@ -4992,7 +4994,7 @@ msgid "" "%4$s\n" msgstr "" "%1$s (%2$s) se demande ce que vous devenez ces temps-ci et vous invite à " -"publier des nouvelles.\n" +"poster des nouvelles.\n" "\n" "Donc on vous écoute :)\n" "\n" @@ -5044,7 +5046,7 @@ msgstr "" #: lib/mail.php:559 #, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "%s (@%s) a ajouté un de vos statut à ses favoris" +msgstr "%s (@%s) a ajouté un de vos avis à ses favoris" #: lib/mail.php:561 #, php-format @@ -5178,24 +5180,24 @@ msgstr "Envoyer un message direct" msgid "To" msgstr "À" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Caractères restants" #: lib/noticeform.php:158 msgid "Send a notice" -msgstr "Envoyer un statut" +msgstr "Envoyer un avis" #: lib/noticeform.php:171 #, php-format msgid "What's up, %s?" msgstr "Quoi de neuf, %s ?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Attacher" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Attacher un fichier" @@ -5230,7 +5232,7 @@ msgstr "dans le contexte" #: lib/noticelist.php:526 msgid "Reply to this notice" -msgstr "Répondre à ce statut" +msgstr "Répondre à cet avis" #: lib/noticelist.php:527 msgid "Reply" @@ -5303,7 +5305,7 @@ msgstr "Vos messages envoyés" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "Marquages des statuts de %s" +msgstr "Marques dans les avis de %s" #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -5351,7 +5353,7 @@ msgstr "Groupes d’utilisateurs" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" -msgstr "Marquages récents" +msgstr "Marques récentes" #: lib/publicgroupnav.php:88 msgid "Featured" @@ -5375,7 +5377,7 @@ msgstr "Rechercher sur le site" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "Mot(s) celf(s)" +msgstr "Mot(s) clef(s)" #: lib/searchaction.php:162 msgid "Search help" @@ -5391,7 +5393,7 @@ msgstr "Chercher des personnes sur ce site" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "Chercher dans le contenu des statuts" +msgstr "Chercher dans le contenu des avis" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" @@ -5431,12 +5433,12 @@ msgstr "Groupes de %s" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "Nuage de mots clefs des personnes tel que définis par eux-même" +msgstr "Nuage de marques pour une personne (ajoutées par eux-même)" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "Nuage de mots clefs des personnes" +msgstr "Nuage de marques pour une personne" #: lib/subscriptionlist.php:126 msgid "(none)" @@ -5444,7 +5446,7 @@ msgstr "(aucun)" #: lib/subs.php:52 msgid "Already subscribed!" -msgstr "Déjà souscrit !" +msgstr "Déjà abonné !" #: lib/subs.php:56 msgid "User has blocked you." @@ -5462,7 +5464,12 @@ msgstr "Impossible d’abonner une autre personne à votre profil." msgid "Not subscribed!" msgstr "Pas abonné !" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Impossible de cesser l’abonnement" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Impossible de cesser l’abonnement" diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index 445e580bbb..d809f92341 100644 --- a/locale/ga/LC_MESSAGES/statusnet.po +++ b/locale/ga/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:42+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:19+0000\n" "Language-Team: Irish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ga\n" "X-Message-Group: out-statusnet\n" @@ -185,7 +185,12 @@ msgstr "O usuario non ten perfil." msgid "Could not save profile." msgstr "Non se puido gardar o perfil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Non se puido actualizar o usuario." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Bloqueo de usuario fallido." @@ -848,109 +853,109 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Tamaño inválido." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, 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:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Cambiar contrasinal" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Invitar" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Modificado" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Novo chío" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, 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í" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Cambiar contrasinal" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Conectar" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Buscar" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Lista" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -960,7 +965,7 @@ msgstr "" msgid "Save" msgstr "Gardar" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1410,20 +1415,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 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:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Non se puideron gardar os teus axustes de Twitter!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Preferencias gardadas." @@ -1743,7 +1748,7 @@ msgstr "Mensaxe persoal" msgid "Optionally add a personal message to the invitation." msgstr "Opcionalmente engadir unha mensaxe persoal á invitación." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Enviar" @@ -2072,8 +2077,8 @@ msgstr "Conectar" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Non é un formato de datos soportado." @@ -4679,11 +4684,7 @@ 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:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5206,7 +5207,7 @@ msgstr "Eliminar chío" msgid "To" msgstr "A" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 ou máis caracteres" @@ -5221,11 +5222,11 @@ msgstr "Dar un toque" msgid "What's up, %s?" msgstr "¿Que pasa, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5514,7 +5515,12 @@ msgstr "Outro usuario non se puido suscribir a ti." msgid "Not subscribed!" msgstr "Non está suscrito!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Non se pode eliminar a subscrición." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Non se pode eliminar a subscrición." diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index c481313070..8ff8672800 100644 --- a/locale/he/LC_MESSAGES/statusnet.po +++ b/locale/he/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:46+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:22+0000\n" "Language-Team: Hebrew\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: he\n" "X-Message-Group: out-statusnet\n" @@ -183,7 +183,12 @@ msgstr "למשתמש אין פרופיל." msgid "Could not save profile." msgstr "שמירת הפרופיל נכשלה." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "עידכון המשתמש נכשל." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -834,109 +839,109 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "גודל לא חוקי." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "עמוד זה אינו זמין בסוג מדיה שאתה יכול לקבל" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "שנה סיסמה" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "הודעה חדשה" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "שנה" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "הודעה חדשה" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "זה ארוך מידי. אורך מירבי להודעה הוא 140 אותיות." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "שנה סיסמה" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "התחבר" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "חיפוש" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "טקסט" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "היכנס" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -946,7 +951,7 @@ msgstr "" msgid "Save" msgstr "שמור" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1388,19 +1393,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "עידכון המשתמש נכשל." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "העדפות נשמרו." @@ -1715,7 +1720,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "שלח" @@ -2011,8 +2016,8 @@ msgstr "התחבר" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4490,11 +4495,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "זה ארוך מידי. אורך מירבי להודעה הוא 140 אותיות." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4956,7 +4957,7 @@ msgstr "" msgid "To" msgstr "אל" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "לפחות 6 אותיות" @@ -4971,11 +4972,11 @@ msgstr "הודעה חדשה" msgid "What's up, %s?" msgstr "מה המצב %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5257,7 +5258,12 @@ msgstr "" msgid "Not subscribed!" msgstr "לא מנוי!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "מחיקת המנוי לא הצליחה." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "מחיקת המנוי לא הצליחה." diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index c22ee263de..6a0ff37b46 100644 --- a/locale/hsb/LC_MESSAGES/statusnet.po +++ b/locale/hsb/LC_MESSAGES/statusnet.po @@ -6,19 +6,19 @@ # msgid "" msgstr "" -"" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-11-27 23:50+0000\n" -"PO-Revision-Date: 2009-12-02 23:32:10+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:27+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: hsb\n" "X-Message-Group: out-statusnet\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : (n%100==3 || n%100==4) ? 2 : 3)\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : (n%100==3 || " +"n%100==4) ? 2 : 3)\n" #: actions/all.php:63 actions/public.php:97 actions/replies.php:92 #: actions/showfavorites.php:137 actions/tag.php:51 @@ -76,10 +76,42 @@ msgstr "Kanal za přećelow wužiwarja %s (RSS 2.0)" msgid "Feed for friends of %s (Atom)" msgstr "Kanal za přećelow wužiwarja %s (Atom)" +#: actions/all.php:127 +#, php-format +msgid "" +"This is the timeline for %s and friends but no one has posted anything yet." +msgstr "" + +#: actions/all.php:132 +#, php-format +msgid "" +"Try subscribing to more people, [join a group](%%action.groups%%) or post " +"something yourself." +msgstr "" + +#: actions/all.php:134 +#, php-format +msgid "" +"You can try to [nudge %s](../%s) from his profile or [post something to his " +"or her attention](%%%%action.newnotice%%%%?status_textarea=%s)." +msgstr "" + +#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202 +#, php-format +msgid "" +"Why not [register an account](%%%%action.register%%%%) and then nudge %s or " +"post a notice to his or her attention." +msgstr "" + #: actions/all.php:165 msgid "You and friends" msgstr "Ty a přećeljo" +#: actions/allrss.php:119 actions/apitimelinefriends.php:121 +#, php-format +msgid "Updates from %1$s and friends on %2$s!" +msgstr "" + #: actions/apiaccountratelimitstatus.php:70 #: actions/apiaccountupdatedeliverydevice.php:93 #: actions/apiaccountupdateprofilebackgroundimage.php:94 @@ -101,10 +133,34 @@ msgstr "API-metoda njenamakana." msgid "This method requires a POST." msgstr "Tuta metoda wužaduje sej POST." +#: actions/apiaccountupdatedeliverydevice.php:105 +msgid "" +"You must specify a parameter named 'device' with a value of one of: sms, im, " +"none" +msgstr "" + #: actions/apiaccountupdatedeliverydevice.php:132 msgid "Could not update user." msgstr "Wužiwar njeje so dał aktualizować." +#: actions/apiaccountupdateprofilebackgroundimage.php:108 +#: actions/apiaccountupdateprofileimage.php:97 +#: actions/apistatusesupdate.php:127 actions/avatarsettings.php:254 +#: actions/designadminpanel.php:122 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 "" + +#: actions/apiaccountupdateprofilebackgroundimage.php:136 +#: actions/apiaccountupdateprofilebackgroundimage.php:146 +#: actions/apiaccountupdateprofilecolors.php:164 +#: actions/apiaccountupdateprofilecolors.php:174 +msgid "Unable to save your design settings." +msgstr "" + #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 msgid "Could not update your design." @@ -123,6 +179,19 @@ msgstr "Wužiwar nima profil." msgid "Could not save profile." msgstr "Profil njeje so składować dał." +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Njemóžeš wužiwarjow wušmórnyć." + +#: actions/apiblockcreate.php:119 +msgid "Block user failed." +msgstr "" + +#: actions/apiblockdestroy.php:107 +msgid "Unblock user failed." +msgstr "" + #: actions/apidirectmessagenew.php:126 msgid "No message text!" msgstr "Žadyn powěsćowy tekst!" @@ -136,6 +205,10 @@ msgstr "To je předołho. Maksimalna powěsćowa wulkosć je %d znamješkow." msgid "Recipient user not found." msgstr "Přijimowar njenamakany." +#: actions/apidirectmessagenew.php:150 +msgid "Can't send direct messages to users who aren't your friend." +msgstr "" + #: actions/apidirectmessage.php:89 #, php-format msgid "Direct messages from %s" @@ -182,10 +255,53 @@ msgstr "Status z tym ID njenamakany." 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:176 +msgid "Could not create favorite." +msgstr "" + #: actions/apifavoritedestroy.php:122 msgid "That status is not a favorite!" msgstr "Tón status faworit njeje!" +#: 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 +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:135 +msgid "Could not determine source user." +msgstr "" + +#: actions/apifriendshipsshow.php:143 +msgid "Could not find target user." +msgstr "" + +#: actions/apigroupcreate.php:164 actions/editgroup.php:182 +#: actions/newgroup.php:126 actions/profilesettings.php:208 +#: actions/register.php:205 +msgid "Nickname must have only lowercase letters and numbers and no spaces." +msgstr "" + #: actions/apigroupcreate.php:173 actions/editgroup.php:186 #: actions/newgroup.php:130 actions/profilesettings.php:231 #: actions/register.php:208 @@ -254,15 +370,44 @@ msgstr "Skupina njenamakana!" msgid "You are already a member of that group." msgstr "Sy hižo čłon teje skupiny." +#: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221 +msgid "You have been blocked from that group by the admin." +msgstr "" + +#: actions/apigroupjoin.php:138 +#, php-format +msgid "Could not join user %s to group %s." +msgstr "" + #: actions/apigroupleave.php:114 msgid "You are not a member of this group." msgstr "Njejsy čłon tuteje skupiny." +#: actions/apigroupleave.php:124 +#, php-format +msgid "Could not remove user %s to group %s." +msgstr "" + +#: actions/apigrouplistall.php:90 actions/usergroups.php:62 +#, php-format +msgid "%s groups" +msgstr "" + #: actions/apigrouplistall.php:94 #, php-format msgid "groups on %s" msgstr "skupiny na %s" +#: actions/apigrouplist.php:95 +#, php-format +msgid "%s's groups" +msgstr "" + +#: actions/apigrouplist.php:103 +#, php-format +msgid "Groups %s is a member of on %s." +msgstr "" + #: actions/apistatusesdestroy.php:107 msgid "This method requires a POST or DELETE." msgstr "Tuta metoda wužaduje sej POST abo DELETE." @@ -289,10 +434,67 @@ msgstr "To je předołho. Maksimalna wulkosć zdźělenki je %d znamješkow." msgid "Not found" msgstr "Njenamakany" +#: actions/apistatusesupdate.php:227 actions/newnotice.php:183 +#, php-format +msgid "Max notice size is %d chars, including attachment URL." +msgstr "" + #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 msgid "Unsupported format." msgstr "Njepodpěrany format." +#: actions/apitimelinefavorites.php:107 +#, php-format +msgid "%s / Favorites from %s" +msgstr "" + +#: actions/apitimelinefavorites.php:119 +#, php-format +msgid "%s updates favorited by %s / %s." +msgstr "" + +#: actions/apitimelinegroup.php:108 actions/apitimelineuser.php:117 +#: actions/grouprss.php:131 actions/userrss.php:90 +#, php-format +msgid "%s timeline" +msgstr "" + +#: actions/apitimelinegroup.php:116 actions/apitimelineuser.php:125 +#: actions/userrss.php:92 +#, php-format +msgid "Updates from %1$s on %2$s!" +msgstr "" + +#: actions/apitimelinementions.php:116 +#, php-format +msgid "%1$s / Updates mentioning %2$s" +msgstr "" + +#: actions/apitimelinementions.php:126 +#, php-format +msgid "%1$s updates that reply to updates from %2$s / %3$s." +msgstr "" + +#: actions/apitimelinepublic.php:106 actions/publicrss.php:103 +#, php-format +msgid "%s public timeline" +msgstr "" + +#: actions/apitimelinepublic.php:110 actions/publicrss.php:105 +#, php-format +msgid "%s updates from everyone!" +msgstr "" + +#: actions/apitimelinetag.php:101 actions/tag.php:66 +#, php-format +msgid "Notices tagged with %s" +msgstr "" + +#: actions/apitimelinetag.php:107 actions/tagrss.php:64 +#, php-format +msgid "Updates tagged with %1$s on %2$s!" +msgstr "" + #: actions/apiusershow.php:96 msgid "Not found." msgstr "Njenamakany." @@ -321,7 +523,8 @@ msgstr "Awatar" #: actions/avatarsettings.php:78 #, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "Móžeš swój wosobinski awatar nahrać. Maksimalna datajowa wulkosć je %s." +msgstr "" +"Móžeš swój wosobinski awatar nahrać. Maksimalna datajowa wulkosć je %s." #: actions/avatarsettings.php:106 actions/avatarsettings.php:182 #: actions/grouplogo.php:178 actions/remotesubscribe.php:191 @@ -353,10 +556,48 @@ msgstr "Zničić" msgid "Upload" msgstr "Nahrać" +#: actions/avatarsettings.php:228 actions/grouplogo.php:286 +msgid "Crop" +msgstr "" + +#: actions/avatarsettings.php:265 actions/disfavor.php:74 +#: actions/emailsettings.php:238 actions/favor.php:75 +#: actions/groupblock.php:66 actions/grouplogo.php:309 +#: actions/groupunblock.php:66 actions/imsettings.php:206 +#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 +#: actions/othersettings.php:145 actions/passwordsettings.php:138 +#: actions/profilesettings.php:187 actions/recoverpassword.php:337 +#: actions/register.php:165 actions/remotesubscribe.php:77 +#: actions/smssettings.php:228 actions/subedit.php:38 actions/subscribe.php:46 +#: 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/avatarsettings.php:277 actions/designadminpanel.php:103 +#: actions/emailsettings.php:256 actions/grouplogo.php:319 +#: actions/imsettings.php:220 actions/recoverpassword.php:44 +#: actions/smssettings.php:248 lib/designsettings.php:304 +msgid "Unexpected form submission." +msgstr "" + +#: actions/avatarsettings.php:322 +msgid "Pick a square area of the image to be your avatar" +msgstr "" + +#: actions/avatarsettings.php:337 actions/grouplogo.php:377 +msgid "Lost our file data." +msgstr "" + #: actions/avatarsettings.php:360 msgid "Avatar updated." msgstr "Awatar zaktualizowany." +#: actions/avatarsettings.php:363 +msgid "Failed updating avatar." +msgstr "" + #: actions/avatarsettings.php:387 msgid "Avatar deleted." msgstr "Awatar zničeny." @@ -375,6 +616,32 @@ msgstr "Žane přimjeno" msgid "No such group" msgstr "Skupina njeeksistuje" +#: actions/blockedfromgroup.php:90 +#, php-format +msgid "%s blocked profiles" +msgstr "" + +#: actions/blockedfromgroup.php:93 +#, php-format +msgid "%s blocked profiles, page %d" +msgstr "" + +#: actions/blockedfromgroup.php:108 +msgid "A list of the users blocked from joining this group." +msgstr "" + +#: actions/blockedfromgroup.php:281 +msgid "Unblock user from group" +msgstr "" + +#: actions/blockedfromgroup.php:313 lib/unblockform.php:69 +msgid "Unblock" +msgstr "" + +#: actions/blockedfromgroup.php:313 lib/unblockform.php:80 +msgid "Unblock this user" +msgstr "" + #: actions/block.php:69 msgid "You already blocked that user." msgstr "Sy tutoho wužiwarja hižo zablokował." @@ -383,6 +650,13 @@ msgstr "Sy tutoho wužiwarja hižo zablokował." msgid "Block user" msgstr "Wužiwarja blokować" +#: actions/block.php:130 +msgid "" +"Are you sure you want to block this user? Afterwards, they will be " +"unsubscribed from you, unable to subscribe to you in the future, and you " +"will not be notified of any @-replies from them." +msgstr "" + #: actions/block.php:143 actions/deletenotice.php:145 #: actions/deleteuser.php:147 actions/groupblock.php:178 msgid "No" @@ -401,6 +675,14 @@ msgstr "Haj" msgid "Block this user" msgstr "Tutoho wužiwarja blokować" +#: actions/block.php:162 +msgid "Failed to save block information." +msgstr "" + +#: actions/bookmarklet.php:50 +msgid "Post to " +msgstr "" + #: actions/confirmaddress.php:75 msgid "No confirmation code." msgstr "Žadyn wobkrućenski kod." @@ -422,6 +704,19 @@ msgstr "Njespóznany adresowy typ %s" msgid "That address has already been confirmed." msgstr "Tuta adresa bu hižo wobkrućena." +#: actions/confirmaddress.php:114 actions/emailsettings.php:296 +#: actions/emailsettings.php:427 actions/imsettings.php:258 +#: actions/imsettings.php:401 actions/othersettings.php:174 +#: actions/profilesettings.php:276 actions/smssettings.php:278 +#: actions/smssettings.php:420 +msgid "Couldn't update user." +msgstr "" + +#: actions/confirmaddress.php:126 actions/emailsettings.php:391 +#: actions/imsettings.php:363 actions/smssettings.php:382 +msgid "Couldn't delete email confirmation." +msgstr "" + #: actions/confirmaddress.php:144 msgid "Confirm Address" msgstr "Adresu wobkrućić" @@ -436,7 +731,7 @@ msgid "Conversation" msgstr "Konwersacija" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 -#: lib/profileaction.php:206 lib/searchgroupnav.php:82 +#: lib/profileaction.php:216 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Zdźělenki" @@ -457,6 +752,12 @@ msgstr "Njepřizjewjeny." msgid "Can't delete this notice." msgstr "Tuta zdźělenka njeda so zničić." +#: 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 "Zdźělenku wušmórnyć" @@ -473,6 +774,10 @@ msgstr "Tutu zdźělenku njewušmórnyć" msgid "Delete this notice" msgstr "Tutu zdźělenku wušmórnyć" +#: actions/deletenotice.php:157 +msgid "There was a problem with your session token. Try again, please." +msgstr "" + #: actions/deleteuser.php:67 msgid "You cannot delete users." msgstr "Njemóžeš wužiwarjow wušmórnyć." @@ -485,6 +790,12 @@ msgstr "Móžeš jenož lokalnych wužiwarjow wušmórnyć." msgid "Delete user" msgstr "Wužiwarja wušmórnyć" +#: actions/deleteuser.php:135 +msgid "" +"Are you sure you want to delete this user? This will clear all data about " +"the user from the database, without a backup." +msgstr "" + #: actions/deleteuser.php:148 lib/deleteuserform.php:77 msgid "Delete this user" msgstr "Tutoho wužiwarja wušmórnyć" @@ -498,90 +809,101 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Designowe nastajenja za tute sydło StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "Njepłaćiwy logowy URL." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Šat njesteji k dispoziciji: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Logo změnić" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Logo sydła" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Šat změnić" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Šat sydła" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Šat za sydło." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Pozadkowy wobraz změnić" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Pozadk" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format -msgid "You can upload a background image for the site. The maximum file size is %1$s." -msgstr "Móžeš pozadkowy wobraz za sydło nahrać. Maksimalna datajowa wulkosć je %1$s." +msgid "" +"You can upload a background image for the site. The maximum file size is %1" +"$s." +msgstr "" +"Móžeš pozadkowy wobraz za sydło nahrać. Maksimalna datajowa wulkosć je %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Zapinjeny" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Wupinjeny" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 +msgid "Turn background image on or off." +msgstr "" + +#: actions/designadminpanel.php:479 lib/designsettings.php:161 +msgid "Tile background image" +msgstr "" + +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Barby změnić" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Wobsah" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Bóčnica" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Wotkazy" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Standardne hódnoty wužiwać" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standardne designy wobnowić" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Na standard wróćo stajić" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -591,7 +913,7 @@ msgstr "Na standard wróćo stajić" msgid "Save" msgstr "Składować" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Design składować" @@ -607,6 +929,11 @@ msgstr "K faworitam přidać" msgid "No such document." msgstr "Dokument njeeksistuje." +#: 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 "Dyrbiš přizjewjeny być, zo by skupinu wutworił." @@ -641,6 +968,11 @@ msgstr "Opcije składowane." msgid "Email Settings" msgstr "E-mejlowe nastajenja" +#: actions/emailsettings.php:71 +#, php-format +msgid "Manage how you get email from %%site.name%%." +msgstr "" + #: actions/emailsettings.php:100 actions/imsettings.php:100 #: actions/smssettings.php:104 msgid "Address" @@ -656,6 +988,12 @@ msgstr "Aktualna wobkrućena e-mejlowa adresa." msgid "Remove" msgstr "Wotstronić" +#: actions/emailsettings.php:113 +msgid "" +"Awaiting confirmation on this address. Check your inbox (and spam box!) for " +"a message with further instructions." +msgstr "" + #: actions/emailsettings.php:117 actions/imsettings.php:120 #: actions/smssettings.php:126 msgid "Cancel" @@ -678,6 +1016,14 @@ msgstr "Přidać" msgid "Incoming email" msgstr "Dochadźaca e-mejl" +#: actions/emailsettings.php:138 actions/smssettings.php:157 +msgid "Send email to this address to post new notices." +msgstr "" + +#: actions/emailsettings.php:145 actions/smssettings.php:162 +msgid "Make a new email address for posting to; cancels the old one." +msgstr "" + #: actions/emailsettings.php:148 actions/smssettings.php:164 msgid "New" msgstr "Nowy" @@ -687,6 +1033,26 @@ msgstr "Nowy" msgid "Preferences" msgstr "Nastajenja" +#: actions/emailsettings.php:158 +msgid "Send me notices of new subscriptions through email." +msgstr "" + +#: actions/emailsettings.php:163 +msgid "Send me email when someone adds my notice as a favorite." +msgstr "" + +#: actions/emailsettings.php:169 +msgid "Send me email when someone sends me a private message." +msgstr "" + +#: actions/emailsettings.php:174 +msgid "Send me email when someone sends me an \"@-reply\"." +msgstr "" + +#: actions/emailsettings.php:179 +msgid "Allow friends to nudge me and send me an email." +msgstr "" + #: actions/emailsettings.php:185 msgid "I want to post notices by email." msgstr "Chcu zdźělenki přez e-mejl pósłać." @@ -704,6 +1070,10 @@ msgstr "Nastajenja składowane." msgid "No email address." msgstr "Žana e-mejlowa adresa." +#: actions/emailsettings.php:327 +msgid "Cannot normalize that email address" +msgstr "" + #: actions/emailsettings.php:331 actions/siteadminpanel.php:158 msgid "Not a valid email address" msgstr "Njeje płaćiwa e-mejlowa adresa" @@ -716,6 +1086,22 @@ msgstr "To je hižo twoja e-mejlowa adresa." msgid "That email address already belongs to another user." msgstr "Ta e-mejlowa adresa hižo słuša k druhemu wužiwarjej." +#: actions/emailsettings.php:353 actions/imsettings.php:317 +#: actions/smssettings.php:337 +msgid "Couldn't insert confirmation code." +msgstr "" + +#: actions/emailsettings.php:359 +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 "" + +#: actions/emailsettings.php:379 actions/imsettings.php:351 +#: actions/smssettings.php:370 +msgid "No pending confirmation to cancel." +msgstr "" + #: actions/emailsettings.php:383 actions/imsettings.php:355 msgid "That is the wrong IM address." msgstr "to je wopačna IM-adresa." @@ -738,6 +1124,11 @@ msgstr "Adresa bu wotstronjena." msgid "No incoming email address." msgstr "Žana adresa za dochadźace e-mejle." +#: actions/emailsettings.php:456 actions/emailsettings.php:478 +#: actions/smssettings.php:528 actions/smssettings.php:552 +msgid "Couldn't update user record." +msgstr "" + #: actions/emailsettings.php:459 actions/smssettings.php:531 msgid "Incoming email address removed." msgstr "Adresa za dochadźaće e-mejle wotstronjena." @@ -756,10 +1147,61 @@ msgstr "Woblubowane zdźělenki" msgid "Popular notices, page %d" msgstr "Woblubowane zdźělenki, strona %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 "" + +#: 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/favor.php:79 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/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 of the great users on %s" +msgstr "" + #: actions/file.php:34 msgid "No notice id" msgstr "Žadyn ID zdźělenki" @@ -780,10 +1222,34 @@ msgstr "Žane nahrate přiwěški" msgid "Not expecting this response!" msgstr "Njewočakowana wotmołwa!" -#: actions/finishremotesubscribe.php:106 +#: 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 "Njejsy awtorizowany." +#: 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 lib/oauthstore.php:306 +msgid "Error updating remote profile" +msgstr "" + #: actions/foafgroup.php:44 actions/foafgroup.php:62 actions/groupblock.php:86 #: actions/groupunblock.php:86 actions/leavegroup.php:83 #: actions/makeadmin.php:86 lib/command.php:212 lib/command.php:263 @@ -831,6 +1297,14 @@ msgstr "Wužiwar njeje čłon skupiny." msgid "Block user from group" msgstr "Wužiwarja za skupinu blokować" +#: actions/groupblock.php:162 +#, php-format +msgid "" +"Are you sure you want to block user \"%s\" from the group \"%s\"? They will " +"be removed from the group, unable to post, and unable to subscribe to the " +"group in the future." +msgstr "" + #: actions/groupblock.php:178 msgid "Do not block this user from this group" msgstr "Tutoho wužiwarja za tutu skupinu blokować" @@ -839,6 +1313,10 @@ msgstr "Tutoho wužiwarja za tutu skupinu blokować" msgid "Block this user from this group" msgstr "Tutoho wužiwarja za tutu skupinu blokować" +#: actions/groupblock.php:196 +msgid "Database error blocking user from group." +msgstr "" + #: actions/groupbyid.php:74 msgid "No ID" msgstr "Žadyn ID" @@ -851,7 +1329,24 @@ msgstr "Dyrbiš přizjewjeny być, zo by skupinu wobdźěłał." msgid "Group design" msgstr "Skupinski design" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:152 +msgid "" +"Customize the way your group looks with a background image and a colour " +"palette of your choice." +msgstr "" + +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 +msgid "Couldn't update your design." +msgstr "" + +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 +#: 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/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Designowe nastajenja składowane." @@ -861,13 +1356,34 @@ msgstr "Skupinske logo" #: actions/grouplogo.php:150 #, php-format -msgid "You can upload a logo image for your group. The maximum file size is %s." -msgstr "Móžeš logowy wobraz za swoju skupinu nahrać. Maksimalna datajowa wulkosć je %s." +msgid "" +"You can upload a logo image for your group. The maximum file size is %s." +msgstr "" +"Móžeš logowy wobraz za swoju skupinu nahrać. Maksimalna datajowa wulkosć je %" +"s." + +#: actions/grouplogo.php:362 +msgid "Pick a square area of the image to be the logo." +msgstr "" #: actions/grouplogo.php:396 msgid "Logo updated." msgstr "Logo zaktualizowane." +#: actions/grouplogo.php:398 +msgid "Failed updating logo." +msgstr "" + +#: actions/groupmembers.php:93 lib/groupnav.php:92 +#, php-format +msgid "%s group members" +msgstr "" + +#: actions/groupmembers.php:96 +#, php-format +msgid "%s group members, page %d" +msgstr "" + #: actions/groupmembers.php:111 msgid "A list of the users in this group." msgstr "Lisćina wužiwarjow w tutej skupinje." @@ -880,10 +1396,30 @@ msgstr "Administrator" msgid "Block" msgstr "Blokować" +#: actions/groupmembers.php:441 +msgid "Make user an admin of the group" +msgstr "" + +#: actions/groupmembers.php:473 +msgid "Make Admin" +msgstr "" + #: actions/groupmembers.php:473 msgid "Make this user an admin" msgstr "Tutoho wužiwarja k administratorej činić" +#: actions/grouprss.php:133 +#, php-format +msgid "Updates from members of %1$s on %2$s!" +msgstr "" + +#: actions/groupsearch.php:52 +#, php-format +msgid "" +"Search for groups on %%site.name%% by their name, location, or description. " +"Separate the terms by spaces; they must be 3 characters or more." +msgstr "" + #: actions/groupsearch.php:58 msgid "Group search" msgstr "Skupinske pytanje" @@ -893,8 +1429,22 @@ msgstr "Skupinske pytanje" msgid "No results." msgstr "Žane wuslědki." -#: actions/groups.php:62 lib/profileaction.php:220 lib/publicgroupnav.php:81 -#: lib/searchgroupnav.php:84 lib/subgroupnav.php:98 +#: actions/groupsearch.php:82 +#, php-format +msgid "" +"If you can't find the group you're looking for, you can [create it](%%action." +"newgroup%%) yourself." +msgstr "" + +#: actions/groupsearch.php:85 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" +msgstr "" + +#: actions/groups.php:62 lib/profileaction.php:210 lib/profileaction.php:230 +#: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 msgid "Groups" msgstr "Skupiny" @@ -903,26 +1453,93 @@ msgstr "Skupiny" msgid "Groups, page %d" msgstr "Skupiny, strona %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 "" + #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122 msgid "Create a new group" msgstr "Nowu skupinu wutworić" +#: 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:77 +msgid "Error removing the block." +msgstr "" + #: actions/imsettings.php:59 msgid "IM Settings" msgstr "IM-nastajenja" +#: actions/imsettings.php:70 +#, php-format +msgid "" +"You can send and receive notices through Jabber/GTalk [instant messages](%%" +"doc.im%%). Configure your address and settings below." +msgstr "" + #: actions/imsettings.php:89 msgid "IM is not available." msgstr "IM k dispoziciji njesteji." +#: actions/imsettings.php:106 +msgid "Current confirmed Jabber/GTalk address." +msgstr "" + +#: actions/imsettings.php:114 +#, 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 "" + #: actions/imsettings.php:124 msgid "IM Address" msgstr "IM-adresa" +#: actions/imsettings.php:126 +#, 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 "" + +#: actions/imsettings.php:143 +msgid "Send me notices through Jabber/GTalk." +msgstr "" + +#: actions/imsettings.php:148 +msgid "Post a notice when my Jabber/GTalk status changes." +msgstr "" + +#: actions/imsettings.php:153 +msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." +msgstr "" + +#: actions/imsettings.php:159 +msgid "Publish a MicroID for my Jabber/GTalk address." +msgstr "" + #: actions/imsettings.php:285 msgid "No Jabber ID." msgstr "Žadyn ID Jabber." +#: actions/imsettings.php:292 +msgid "Cannot normalize that Jabber ID" +msgstr "" + #: actions/imsettings.php:296 msgid "Not a valid Jabber ID" msgstr "Njepłaćiwy ID Jabber" @@ -931,14 +1548,44 @@ msgstr "Njepłaćiwy ID Jabber" msgid "That is already your Jabber ID." msgstr "To je hižo twój ID Jabber." +#: actions/imsettings.php:302 +msgid "Jabber ID already belongs to another user." +msgstr "" + +#: actions/imsettings.php:327 +#, php-format +msgid "" +"A confirmation code was sent to the IM address you added. You must approve %" +"s for sending messages to you." +msgstr "" + #: actions/imsettings.php:387 msgid "That is not your Jabber ID." msgstr "To njeje twój ID Jabber." +#: actions/inbox.php:59 +#, php-format +msgid "Inbox for %s - page %d" +msgstr "" + +#: actions/inbox.php:62 +#, php-format +msgid "Inbox for %s" +msgstr "" + +#: actions/inbox.php:115 +msgid "This is your inbox, which lists your incoming private messages." +msgstr "" + #: actions/invite.php:39 msgid "Invites have been disabled." msgstr "Přeprošenja buchu znjemóžnjene." +#: actions/invite.php:41 +#, php-format +msgid "You must be logged in to invite other users to use %s" +msgstr "" + #: actions/invite.php:72 #, php-format msgid "Invalid email address: %s" @@ -961,9 +1608,27 @@ msgstr "Sy tutych wužiwarjow hižo abonował:" msgid "%s (%s)" msgstr "%s (%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 "Wužij tutón formular, zo by swojich přećelow a kolegow přeprosył, zo bychu tutu słužbu wužiwali." +msgid "" +"Use this form to invite your friends and colleagues to use this service." +msgstr "" +"Wužij tutón formular, zo by swojich přećelow a kolegow přeprosył, zo bychu " +"tutu słužbu wužiwali." #: actions/invite.php:187 msgid "Email addresses" @@ -981,10 +1646,64 @@ msgstr "Wosobinska powěsć" msgid "Optionally add a personal message to the invitation." msgstr "Wosobinsku powěsć po dobrozdaću přeprošenju přidać." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Pósłać" +#: actions/invite.php:226 +#, php-format +msgid "%1$s has invited you to join them on %2$s" +msgstr "" + +#: actions/invite.php:228 +#, php-format +msgid "" +"%1$s has invited you to join them on %2$s (%3$s).\n" +"\n" +"%2$s is a micro-blogging service that lets you keep up-to-date with people " +"you know and people who interest you.\n" +"\n" +"You can also share news about yourself, your thoughts, or your life online " +"with people who know about you. It's also great for meeting new people who " +"share your interests.\n" +"\n" +"%1$s said:\n" +"\n" +"%4$s\n" +"\n" +"You can see %1$s's profile page on %2$s here:\n" +"\n" +"%5$s\n" +"\n" +"If you'd like to try the service, click on the link below to accept the " +"invitation.\n" +"\n" +"%6$s\n" +"\n" +"If not, you can ignore this message. Thanks for your patience and your " +"time.\n" +"\n" +"Sincerely, %2$s\n" +msgstr "" + +#: actions/joingroup.php:60 +msgid "You must be logged in to join a group." +msgstr "" + +#: actions/joingroup.php:90 lib/command.php:217 +msgid "You are already a member of that group" +msgstr "" + +#: actions/joingroup.php:128 lib/command.php:234 +#, php-format +msgid "Could not join user %s to group %s" +msgstr "" + +#: actions/joingroup.php:135 lib/command.php:239 +#, php-format +msgid "%s joined group %s" +msgstr "" + #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Dyrbiš přizjewjeny być, zo by skupinu wopušćił." @@ -993,46 +1712,81 @@ msgstr "Dyrbiš přizjewjeny być, zo by skupinu wopušćił." msgid "You are not a member of that group." msgstr "Njejsy čłon teje skupiny." +#: actions/leavegroup.php:119 lib/command.php:278 +msgid "Could not find membership record." +msgstr "" + +#: actions/leavegroup.php:127 lib/command.php:284 +#, php-format +msgid "Could not remove user %s to group %s" +msgstr "" + +#: actions/leavegroup.php:134 lib/command.php:289 +#, php-format +msgid "%s left group %s" +msgstr "" + #: actions/login.php:79 actions/register.php:137 msgid "Already logged in." msgstr "Hižo přizjewjeny." -#: actions/login.php:143 +#: actions/login.php:108 actions/login.php:118 +msgid "Invalid or expired token." +msgstr "" + +#: actions/login.php:146 msgid "Incorrect username or password." msgstr "Wopačne wužiwarske mjeno abo hesło." -#: actions/login.php:149 +#: actions/login.php:152 msgid "Error setting user. You are probably not authorized." msgstr "Zmylk při nastajenju wužiwarja. Snano njejsy awtorizowany." -#: actions/login.php:204 actions/login.php:257 lib/action.php:458 +#: actions/login.php:207 actions/login.php:260 lib/action.php:458 #: lib/logingroupnav.php:79 msgid "Login" msgstr "Přizjewić" -#: actions/login.php:243 +#: actions/login.php:246 msgid "Login to site" msgstr "Při sydle přizjewić" -#: actions/login.php:246 actions/profilesettings.php:106 +#: actions/login.php:249 actions/profilesettings.php:106 #: actions/register.php:423 actions/showgroup.php:236 actions/tagother.php:94 #: lib/groupeditform.php:152 lib/userprofile.php:131 msgid "Nickname" msgstr "Přimjeno" -#: actions/login.php:249 actions/register.php:428 +#: actions/login.php:252 actions/register.php:428 #: lib/accountsettingsaction.php:116 msgid "Password" msgstr "Hesło" -#: actions/login.php:252 actions/register.php:477 +#: actions/login.php:255 actions/register.php:477 msgid "Remember me" msgstr "Składować" -#: actions/login.php:263 +#: actions/login.php:256 actions/register.php:479 +msgid "Automatically login in the future; not for shared computers!" +msgstr "" + +#: actions/login.php:266 msgid "Lost or forgotten password?" msgstr "Hesło zhubjene abo zabyte?" +#: actions/login.php:285 +msgid "" +"For security reasons, please re-enter your user name and password before " +"changing your settings." +msgstr "" + +#: actions/login.php:289 +#, php-format +msgid "" +"Login with your username and password. Don't have a username yet? [Register]" +"(%%action.register%%) a new account." +msgstr "" + #: actions/makeadmin.php:91 msgid "Only an admin can make another user an admin." msgstr "Jenož administrator móže druheho wužiwarja k administratorej činić." @@ -1042,6 +1796,16 @@ msgstr "Jenož administrator móže druheho wužiwarja k administratorej činić msgid "%s is already an admin for group \"%s\"." msgstr "%s je hižo administrator za skupinu \"%s\"." +#: actions/makeadmin.php:132 +#, php-format +msgid "Can't get membership record for %s in group %s" +msgstr "" + +#: actions/makeadmin.php:145 +#, php-format +msgid "Can't make %s an admin for group %s" +msgstr "" + #: actions/microsummary.php:69 msgid "No current status" msgstr "Žadyn aktualny status" @@ -1071,10 +1835,20 @@ msgstr "Žadyn wobsah!" msgid "No recipient specified." msgstr "Žadyn přijimowar podaty." +#: actions/newmessage.php:164 lib/command.php:370 +msgid "" +"Don't send a message to yourself; just say it to yourself quietly instead." +msgstr "" + #: actions/newmessage.php:181 msgid "Message sent" msgstr "Powěsć pósłana" +#: actions/newmessage.php:185 lib/command.php:375 +#, php-format +msgid "Direct message to %s sent" +msgstr "" + #: actions/newmessage.php:210 actions/newnotice.php:240 lib/channel.php:170 msgid "Ajax Error" msgstr "Zmylk Ajax" @@ -1087,20 +1861,78 @@ msgstr "Nowa zdźělenka" msgid "Notice posted" msgstr "Zdźělenka wotpósłana" +#: 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 "Tekstowe pytanje" +#: actions/noticesearch.php:91 +#, php-format +msgid "Search results for \"%s\" on %s" +msgstr "" + +#: actions/noticesearch.php:121 +#, php-format +msgid "" +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" +msgstr "" + +#: actions/noticesearch.php:124 +#, php-format +msgid "" +"Why not [register an account](%%%%action.register%%%%) and be the first to " +"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" +msgstr "" + +#: actions/noticesearchrss.php:96 +#, php-format +msgid "Updates with \"%s\"" +msgstr "" + +#: actions/noticesearchrss.php:98 +#, php-format +msgid "Updates matching search term \"%1$s\" on %2$s!" +msgstr "" + +#: actions/nudge.php:85 +msgid "" +"This user doesn't allow nudges or hasn't confirmed or set his email yet." +msgstr "" + +#: actions/nudge.php:94 +msgid "Nudge sent" +msgstr "" + +#: actions/nudge.php:97 +msgid "Nudge sent!" +msgstr "" + #: actions/oembed.php:79 actions/shownotice.php:100 msgid "Notice has no profile" msgstr "Zdźělenka nima profil" +#: actions/oembed.php:86 actions/shownotice.php:180 +#, php-format +msgid "%1$s's status on %2$s" +msgstr "" + +#: actions/oembed.php:157 +msgid "content type " +msgstr "" + #: actions/oembed.php:160 msgid "Only " msgstr "Jenož " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Njeje podpěrany datowy format." @@ -1124,6 +1956,40 @@ msgstr "Wšelake druhe opcije zrjadować." msgid " (free service)" msgstr " (swobodna słužba)" +#: actions/othersettings.php:116 +msgid "Shorten URLs with" +msgstr "" + +#: actions/othersettings.php:117 +msgid "Automatic shortening service to use." +msgstr "" + +#: actions/othersettings.php:122 +msgid "View profile designs" +msgstr "" + +#: actions/othersettings.php:123 +msgid "Show or hide profile designs." +msgstr "" + +#: actions/othersettings.php:153 +msgid "URL shortening service is too long (max 50 chars)." +msgstr "" + +#: actions/outbox.php:58 +#, php-format +msgid "Outbox for %s - page %d" +msgstr "" + +#: actions/outbox.php:61 +#, php-format +msgid "Outbox for %s" +msgstr "" + +#: actions/outbox.php:116 +msgid "This is your outbox, which lists private messages you have sent." +msgstr "" + #: actions/passwordsettings.php:58 msgid "Change password" msgstr "Hesło změnić" @@ -1153,6 +2019,10 @@ msgstr "6 abo wjace znamješkow" msgid "Confirm" msgstr "Wobkrućić" +#: actions/passwordsettings.php:113 actions/recoverpassword.php:240 +msgid "Same as password above" +msgstr "" + #: actions/passwordsettings.php:117 msgid "Change" msgstr "Změnić" @@ -1169,6 +2039,14 @@ msgstr "Hesle so njekryjetej." msgid "Incorrect old password" msgstr "Wopačne stare hesło" +#: actions/passwordsettings.php:181 +msgid "Error saving user; invalid." +msgstr "" + +#: actions/passwordsettings.php:186 actions/recoverpassword.php:368 +msgid "Can't save new password." +msgstr "" + #: actions/passwordsettings.php:192 actions/recoverpassword.php:211 msgid "Password saved." msgstr "Hesło składowane." @@ -1181,6 +2059,26 @@ msgstr "Šćežki" msgid "Path and server settings for this StatusNet site." msgstr "Šćežka a serwerowe nastajenja za tute sydło StatusNet." +#: actions/pathsadminpanel.php:140 +#, php-format +msgid "Theme directory not readable: %s" +msgstr "" + +#: actions/pathsadminpanel.php:146 +#, php-format +msgid "Avatar directory not writable: %s" +msgstr "" + +#: actions/pathsadminpanel.php:152 +#, php-format +msgid "Background directory not writable: %s" +msgstr "" + +#: actions/pathsadminpanel.php:160 +#, php-format +msgid "Locales directory not readable: %s" +msgstr "" + #: actions/pathsadminpanel.php:212 actions/siteadminpanel.php:58 #: lib/adminpanelaction.php:299 msgid "Site" @@ -1254,22 +2152,53 @@ msgstr "Pozadkowy zapis" msgid "Save paths" msgstr "Šćežki składować" +#: actions/peoplesearch.php:52 +#, php-format +msgid "" +"Search for people on %%site.name%% by their name, location, or interests. " +"Separate the terms by spaces; they must be 3 characters or more." +msgstr "" + #: actions/peoplesearch.php:58 msgid "People search" msgstr "Za ludźimi pytać" +#: actions/peopletag.php:70 +#, php-format +msgid "Not a valid people tag: %s" +msgstr "" + +#: actions/peopletag.php:144 +#, php-format +msgid "Users self-tagged with %s - page %d" +msgstr "" + #: actions/postnotice.php:84 msgid "Invalid notice content" msgstr "Njepłaćiwy wobsah zdźělenki" +#: actions/postnotice.php:90 +#, php-format +msgid "Notice license ‘%s’ is not compatible with site license ‘%s’." +msgstr "" + #: actions/profilesettings.php:60 msgid "Profile settings" msgstr "Profilowe nastajenja" +#: 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 "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:447 #: actions/showgroup.php:247 actions/tagother.php:104 #: lib/groupeditform.php:157 lib/userprofile.php:149 @@ -1281,6 +2210,19 @@ msgstr "Dospołne mjeno" msgid "Homepage" msgstr "Startowa strona" +#: actions/profilesettings.php:117 actions/register.php:454 +msgid "URL of your homepage, blog, or profile on another site" +msgstr "" + +#: actions/profilesettings.php:122 actions/register.php:460 +#, php-format +msgid "Describe yourself and your interests in %d chars" +msgstr "" + +#: actions/profilesettings.php:125 actions/register.php:463 +msgid "Describe yourself and your interests" +msgstr "" + #: actions/profilesettings.php:127 actions/register.php:465 msgid "Bio" msgstr "Biografija" @@ -1292,6 +2234,21 @@ msgstr "Biografija" msgid "Location" msgstr "Městno" +#: actions/profilesettings.php:134 actions/register.php:472 +msgid "Where you are, like \"City, State (or Region), Country\"" +msgstr "" + +#: actions/profilesettings.php:138 actions/tagother.php:149 +#: actions/tagother.php:209 lib/subscriptionlist.php:106 +#: lib/subscriptionlist.php:108 lib/userprofile.php:209 +msgid "Tags" +msgstr "" + +#: actions/profilesettings.php:140 +msgid "" +"Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" +msgstr "" + #: actions/profilesettings.php:144 actions/siteadminpanel.php:307 msgid "Language" msgstr "Rěč" @@ -1304,6 +2261,15 @@ msgstr "Preferowana rěč" msgid "Timezone" msgstr "Časowe pasmo" +#: actions/profilesettings.php:155 +msgid "What timezone are you normally in?" +msgstr "" + +#: actions/profilesettings.php:160 +msgid "" +"Automatically subscribe to whoever subscribes to me (best for non-humans)" +msgstr "" + #: actions/profilesettings.php:221 actions/register.php:223 #, php-format msgid "Bio is too long (max %d chars)." @@ -1317,22 +2283,186 @@ 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:246 actions/tagother.php:178 +#, php-format +msgid "Invalid tag: \"%s\"" +msgstr "" + +#: actions/profilesettings.php:295 +msgid "Couldn't update user for autosubscribe." +msgstr "" + +#: actions/profilesettings.php:328 +msgid "Couldn't save profile." +msgstr "" + +#: actions/profilesettings.php:336 +msgid "Couldn't save tags." +msgstr "" + #: actions/profilesettings.php:344 lib/adminpanelaction.php:126 msgid "Settings saved." 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:129 +#, php-format +msgid "Public timeline, page %d" +msgstr "" + +#: actions/public.php:131 lib/publicgroupnav.php:79 +msgid "Public timeline" +msgstr "" + +#: actions/public.php:151 +msgid "Public Stream Feed (RSS 1.0)" +msgstr "" + +#: actions/public.php:155 +msgid "Public Stream Feed (RSS 2.0)" +msgstr "" + +#: actions/public.php:159 +msgid "Public Stream Feed (Atom)" +msgstr "" + +#: actions/public.php:179 +#, php-format +msgid "" +"This is the public timeline for %%site.name%% but no one has posted anything " +"yet." +msgstr "" + +#: actions/public.php:182 +msgid "Be the first to post!" +msgstr "" + +#: actions/public.php:186 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post!" +msgstr "" + +#: actions/public.php:233 +#, 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:238 +#, php-format +msgid "" +"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" +"blogging) service based on the Free Software [StatusNet](http://status.net/) " +"tool." +msgstr "" + +#: actions/publictagcloud.php:57 +msgid "Public tag cloud" +msgstr "" + +#: actions/publictagcloud.php:63 +#, php-format +msgid "These are most popular recent tags on %s " +msgstr "" + +#: actions/publictagcloud.php:69 +#, php-format +msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." +msgstr "" + +#: actions/publictagcloud.php:72 +msgid "Be the first to post one!" +msgstr "" + +#: actions/publictagcloud.php:75 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post " +"one!" +msgstr "" + +#: actions/publictagcloud.php:135 +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 "" + +#: 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 "Sy so identifikował. Zapodaj deleka nowe hesło. " +#: 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 "Hesło wróćo stajić" +#: actions/recoverpassword.php:209 +msgid "Recover password" +msgstr "" + +#: actions/recoverpassword.php:210 actions/recoverpassword.php:322 +msgid "Password recovery requested" +msgstr "" + #: actions/recoverpassword.php:213 msgid "Unknown action" msgstr "Njeznata akcija" @@ -1351,16 +2481,43 @@ msgstr "Zapodaj přimjeno abo e-mejlowu adresu." #: actions/recoverpassword.php:272 msgid "No user with that email address or username." -msgstr "Wužiwar z tej e-mejlowej adresu abo tym wužiwarskim mjenom njeeksistuje." +msgstr "" +"Wužiwar z tej e-mejlowej adresu abo tym wužiwarskim mjenom njeeksistuje." #: actions/recoverpassword.php:287 msgid "No registered email address for that user." msgstr "Wužiwar nima žanu zregistrowanu e-mejlowu adresu." +#: actions/recoverpassword.php:301 +msgid "Error saving address confirmation." +msgstr "" + +#: actions/recoverpassword.php:325 +msgid "" +"Instructions for recovering your password have been sent to the email " +"address registered to your account." +msgstr "" + +#: actions/recoverpassword.php:344 +msgid "Unexpected password reset." +msgstr "" + #: actions/recoverpassword.php:352 msgid "Password must be 6 chars or more." msgstr "Hesło dyrbi 6 znamješkow abo wjace měć." +#: actions/recoverpassword.php:356 +msgid "Password and confirmation do not match." +msgstr "" + +#: actions/recoverpassword.php:375 actions/register.php:248 +msgid "Error setting user." +msgstr "" + +#: actions/recoverpassword.php:382 +msgid "New password successfully saved. You are now logged in." +msgstr "" + #: actions/register.php:85 actions/register.php:189 actions/register.php:404 msgid "Sorry, only invited people can register." msgstr "Wodaj, jenož přeprošeni ludźo móžeja so registrować." @@ -1382,6 +2539,10 @@ msgstr "Registrować" msgid "Registration not allowed." msgstr "Registracija njedowolena." +#: actions/register.php:198 +msgid "You can't register if you don't agree to the license." +msgstr "" + #: actions/register.php:201 msgid "Not a valid email address." msgstr "Njepłaćiwa e-mejlowa adresa." @@ -1394,6 +2555,16 @@ msgstr "E-mejlowa adresa hižo eksistuje." msgid "Invalid username or password." msgstr "Njepłaćiwe wužiwarske mjeno abo hesło." +#: actions/register.php:342 +msgid "" +"With this form you can create a new account. You can then post notices and " +"link up to friends and colleagues. " +msgstr "" + +#: actions/register.php:424 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." +msgstr "" + #: actions/register.php:429 msgid "6 or more characters. Required." msgstr "6 abo wjace znamješkow. Trěbne." @@ -1407,6 +2578,10 @@ msgstr "Jenake kaž hesło horjeka. Trěbne." msgid "Email" msgstr "E-mejl" +#: actions/register.php:438 actions/register.php:442 +msgid "Used only for updates, announcements, and password recovery" +msgstr "" + #: actions/register.php:449 msgid "Longer name, preferably your \"real\" name" msgstr "Dlěše mjeno, wosebje twoje \"woprawdźite\" mjeno" @@ -1419,14 +2594,69 @@ msgstr "Mój tekst a moje dataje steja k dispoziciji pod " msgid "Creative Commons Attribution 3.0" msgstr "Creative Commons Attribution 3.0" +#: actions/register.php:496 +msgid "" +" except this private data: password, email address, IM address, and phone " +"number." +msgstr "" + +#: actions/register.php:537 +#, php-format +msgid "" +"Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may " +"want to...\n" +"\n" +"* Go to [your profile](%s) and post your first message.\n" +"* 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:561 +msgid "" +"(You should receive a message by email momentarily, with instructions on how " +"to confirm your email address.)" +msgstr "" + +#: actions/remotesubscribe.php:98 +#, php-format +msgid "" +"To subscribe, you can [login](%%action.login%%), or [register](%%action." +"register%%) a new account. If you already have an account on a [compatible " +"microblogging site](%%doc.openmublog%%), enter your profile URL below." +msgstr "" + +#: actions/remotesubscribe.php:112 +msgid "Remote subscribe" +msgstr "" + +#: actions/remotesubscribe.php:124 +msgid "Subscribe to a remote user" +msgstr "" + #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "Wužiwarske přimjeno" +#: actions/remotesubscribe.php:130 +msgid "Nickname of the user you want to follow" +msgstr "" + #: actions/remotesubscribe.php:133 msgid "Profile URL" msgstr "URL profila" +#: 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:365 msgid "Subscribe" @@ -1436,6 +2666,137 @@ msgstr "Abonować" msgid "Invalid profile URL (bad format)" msgstr "Njepłaćiwy profilowy URL (wopačny format)" +#: actions/remotesubscribe.php:168 +msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." +msgstr "" + +#: actions/remotesubscribe.php:176 +msgid "That’s a local profile! Login to subscribe." +msgstr "" + +#: actions/remotesubscribe.php:183 +msgid "Couldn’t get a request token." +msgstr "" + +#: actions/replies.php:125 actions/repliesrss.php:68 +#: lib/personalgroupnav.php:105 +#, php-format +msgid "Replies to %s" +msgstr "" + +#: actions/replies.php:127 +#, php-format +msgid "Replies to %s, page %d" +msgstr "" + +#: actions/replies.php:144 +#, php-format +msgid "Replies feed for %s (RSS 1.0)" +msgstr "" + +#: actions/replies.php:151 +#, php-format +msgid "Replies feed for %s (RSS 2.0)" +msgstr "" + +#: actions/replies.php:158 +#, php-format +msgid "Replies feed for %s (Atom)" +msgstr "" + +#: actions/replies.php:198 +#, php-format +msgid "" +"This is the timeline showing replies to %s but %s hasn't received a notice " +"to his attention yet." +msgstr "" + +#: actions/replies.php:203 +#, php-format +msgid "" +"You can engage other users in a conversation, subscribe to more people or " +"[join groups](%%action.groups%%)." +msgstr "" + +#: actions/replies.php:205 +#, php-format +msgid "" +"You can try to [nudge %s](../%s) or [post something to his or her attention]" +"(%%%%action.newnotice%%%%?status_textarea=%s)." +msgstr "" + +#: actions/repliesrss.php:72 +#, php-format +msgid "Replies to %1$s on %2$s!" +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 "" + +#: actions/showfavorites.php:79 +#, php-format +msgid "%s's favorite notices, page %d" +msgstr "" + +#: actions/showfavorites.php:132 +msgid "Could not retrieve favorite notices." +msgstr "" + +#: actions/showfavorites.php:170 +#, php-format +msgid "Feed for favorites of %s (RSS 1.0)" +msgstr "" + +#: actions/showfavorites.php:177 +#, php-format +msgid "Feed for favorites of %s (RSS 2.0)" +msgstr "" + +#: actions/showfavorites.php:184 +#, php-format +msgid "Feed for favorites of %s (Atom)" +msgstr "" + +#: actions/showfavorites.php:205 +msgid "" +"You haven't chosen any favorite notices yet. Click the fave button on " +"notices you like to bookmark them for later or shed a spotlight on them." +msgstr "" + +#: actions/showfavorites.php:207 +#, php-format +msgid "" +"%s hasn't added any notices to his favorites yet. Post something interesting " +"they would add to their favorites :)" +msgstr "" + +#: actions/showfavorites.php:211 +#, 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 :)" +msgstr "" + +#: actions/showfavorites.php:242 +msgid "This is a way to share what you like." +msgstr "" + +#: actions/showgroup.php:82 lib/groupnav.php:86 +#, php-format +msgid "%s group" +msgstr "" + +#: actions/showgroup.php:84 +#, php-format +msgid "%s group, page %d" +msgstr "" + #: actions/showgroup.php:218 msgid "Group profile" msgstr "Skupinski profil" @@ -1445,6 +2806,11 @@ msgstr "Skupinski profil" msgid "URL" msgstr "URL" +#: actions/showgroup.php:274 actions/tagother.php:128 +#: actions/userauthorization.php:179 lib/userprofile.php:194 +msgid "Note" +msgstr "" + #: actions/showgroup.php:284 lib/groupeditform.php:184 msgid "Aliases" msgstr "Aliasy" @@ -1453,12 +2819,32 @@ msgstr "Aliasy" msgid "Group actions" msgstr "Skupinske akcije" +#: actions/showgroup.php:328 +#, php-format +msgid "Notice feed for %s group (RSS 1.0)" +msgstr "" + +#: actions/showgroup.php:334 +#, php-format +msgid "Notice feed for %s group (RSS 2.0)" +msgstr "" + +#: actions/showgroup.php:340 +#, php-format +msgid "Notice feed for %s group (Atom)" +msgstr "" + +#: actions/showgroup.php:345 +#, php-format +msgid "FOAF for %s group" +msgstr "" + #: actions/showgroup.php:381 actions/showgroup.php:438 lib/groupnav.php:91 msgid "Members" msgstr "Čłonojo" #: actions/showgroup.php:386 lib/profileaction.php:117 -#: lib/profileaction.php:148 lib/profileaction.php:226 lib/section.php:95 +#: lib/profileaction.php:148 lib/profileaction.php:236 lib/section.php:95 #: lib/tagcloudsection.php:71 msgid "(None)" msgstr "(Žadyn)" @@ -1467,7 +2853,7 @@ msgstr "(Žadyn)" msgid "All members" msgstr "Wšitcy čłonojo" -#: actions/showgroup.php:429 lib/profileaction.php:173 +#: actions/showgroup.php:429 lib/profileaction.php:174 msgid "Statistics" msgstr "Statistika" @@ -1475,6 +2861,25 @@ msgstr "Statistika" msgid "Created" msgstr "Wutworjeny" +#: actions/showgroup.php:448 +#, 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:454 +#, 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:482 msgid "Admins" msgstr "Administratorojo" @@ -1483,20 +2888,147 @@ 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 "" + +#: actions/showmessage.php:113 +#, php-format +msgid "Message from %1$s on %2$s" +msgstr "" + #: actions/shownotice.php:90 msgid "Notice deleted." msgstr "Zdźělenka zničena." +#: actions/showstream.php:73 +#, php-format +msgid " tagged %s" +msgstr "" + +#: actions/showstream.php:79 +#, php-format +msgid "%s, page %d" +msgstr "" + +#: actions/showstream.php:122 +#, php-format +msgid "Notice feed for %s tagged %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 "FOAF za %s" +#: actions/showstream.php:191 +#, php-format +msgid "This is the timeline for %s but %s hasn't posted anything yet." +msgstr "" + +#: actions/showstream.php:196 +msgid "" +"Seen anything interesting recently? You haven't posted any notices yet, now " +"would be a good time to start :)" +msgstr "" + +#: actions/showstream.php:198 +#, php-format +msgid "" +"You can try to nudge %s or [post something to his or her attention](%%%%" +"action.newnotice%%%%?status_textarea=%s)." +msgstr "" + +#: actions/showstream.php:234 +#, 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:239 +#, 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/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:147 +msgid "Site name must have non-zero length." +msgstr "" + +#: actions/siteadminpanel.php:155 +msgid "You must have a valid contact email address" +msgstr "" + #: actions/siteadminpanel.php:173 #, php-format msgid "Unknown language \"%s\"" msgstr "Njeznata rěč \"%s\"" +#: actions/siteadminpanel.php:180 +msgid "Invalid snapshot report URL." +msgstr "" + +#: actions/siteadminpanel.php:186 +msgid "Invalid snapshot run value." +msgstr "" + +#: actions/siteadminpanel.php:192 +msgid "Snapshot frequency must be a number." +msgstr "" + +#: actions/siteadminpanel.php:199 +msgid "You must set an SSL server when enabling SSL." +msgstr "" + +#: actions/siteadminpanel.php:204 +msgid "Invalid SSL server. The maximum length is 255 characters." +msgstr "" + +#: actions/siteadminpanel.php:210 +msgid "Minimum text limit is 140 characters." +msgstr "" + +#: actions/siteadminpanel.php:216 +msgid "Dupe limit must 1 or more seconds." +msgstr "" + #: actions/siteadminpanel.php:266 msgid "General" msgstr "Powšitkowny" @@ -1505,6 +3037,30 @@ msgstr "Powšitkowny" msgid "Site name" msgstr "Sydłowe mjeno" +#: actions/siteadminpanel.php:270 +msgid "The name of your site, like \"Yourcompany Microblog\"" +msgstr "" + +#: actions/siteadminpanel.php:274 +msgid "Brought by" +msgstr "" + +#: actions/siteadminpanel.php:275 +msgid "Text used for credits link in footer of each page" +msgstr "" + +#: actions/siteadminpanel.php:279 +msgid "Brought by URL" +msgstr "" + +#: actions/siteadminpanel.php:280 +msgid "URL used for credits link in footer of each page" +msgstr "" + +#: actions/siteadminpanel.php:284 +msgid "Contact email address for your site" +msgstr "" + #: actions/siteadminpanel.php:290 msgid "Local" msgstr "Lokalny" @@ -1513,6 +3069,10 @@ msgstr "Lokalny" msgid "Default timezone" msgstr "Standardne časowe pasmo" +#: actions/siteadminpanel.php:302 +msgid "Default timezone for the site; usually UTC." +msgstr "" + #: actions/siteadminpanel.php:308 msgid "Default site language" msgstr "Standardna sydłowa rěč" @@ -1525,6 +3085,18 @@ msgstr "URL" msgid "Server" msgstr "Serwer" +#: actions/siteadminpanel.php:319 +msgid "Site's server hostname." +msgstr "" + +#: actions/siteadminpanel.php:323 +msgid "Fancy URLs" +msgstr "" + +#: actions/siteadminpanel.php:325 +msgid "Use fancy (more readable and memorable) URLs?" +msgstr "" + #: actions/siteadminpanel.php:331 msgid "Access" msgstr "Přistup" @@ -1533,10 +3105,18 @@ msgstr "Přistup" msgid "Private" msgstr "Priwatny" +#: actions/siteadminpanel.php:336 +msgid "Prohibit anonymous users (not logged in) from viewing site?" +msgstr "" + #: actions/siteadminpanel.php:340 msgid "Invite only" msgstr "Jenož přeprosyć" +#: actions/siteadminpanel.php:342 +msgid "Make registration invitation only." +msgstr "" + #: actions/siteadminpanel.php:346 msgid "Closed" msgstr "Začinjeny" @@ -1545,14 +3125,46 @@ msgstr "Začinjeny" msgid "Disable new registrations." msgstr "Nowe registrowanja znjemóžnić." +#: actions/siteadminpanel.php:354 +msgid "Snapshots" +msgstr "" + +#: actions/siteadminpanel.php:357 +msgid "Randomly during Web hit" +msgstr "" + +#: actions/siteadminpanel.php:358 +msgid "In a scheduled job" +msgstr "" + #: actions/siteadminpanel.php:359 actions/siteadminpanel.php:383 msgid "Never" msgstr "Ženje" +#: actions/siteadminpanel.php:360 +msgid "Data snapshots" +msgstr "" + +#: actions/siteadminpanel.php:361 +msgid "When to send statistical data to status.net servers" +msgstr "" + #: actions/siteadminpanel.php:366 msgid "Frequency" msgstr "Frekwenca" +#: actions/siteadminpanel.php:367 +msgid "Snapshots will be sent once every N web hits" +msgstr "" + +#: actions/siteadminpanel.php:372 +msgid "Report URL" +msgstr "" + +#: actions/siteadminpanel.php:373 +msgid "Snapshots will be sent to this URL" +msgstr "" + #: actions/siteadminpanel.php:380 msgid "SSL" msgstr "SSL" @@ -1569,10 +3181,18 @@ msgstr "Přeco" msgid "Use SSL" msgstr "SSL wužiwać" +#: actions/siteadminpanel.php:388 +msgid "When to use SSL" +msgstr "" + #: actions/siteadminpanel.php:393 msgid "SSL Server" msgstr "SSL-serwer" +#: actions/siteadminpanel.php:394 +msgid "Server to direct SSL requests to" +msgstr "" + #: actions/siteadminpanel.php:400 msgid "Limits" msgstr "Limity" @@ -1585,18 +3205,69 @@ msgstr "Tekstowy limit" msgid "Maximum number of characters for notices." msgstr "Maksimalna ličba znamješkow za zdźělenki." +#: actions/siteadminpanel.php:407 +msgid "Dupe limit" +msgstr "" + +#: actions/siteadminpanel.php:407 +msgid "How long users must wait (in seconds) to post the same thing again." +msgstr "" + #: actions/siteadminpanel.php:421 actions/useradminpanel.php:313 msgid "Save site settings" msgstr "Sydłowe nastajenja składować" +#: actions/smssettings.php:58 +msgid "SMS Settings" +msgstr "" + +#: actions/smssettings.php:69 +#, php-format +msgid "You can receive SMS messages through email from %%site.name%%." +msgstr "" + #: actions/smssettings.php:91 msgid "SMS is not available." msgstr "SMS k dispoziciji njesteji." +#: actions/smssettings.php:112 +msgid "Current confirmed SMS-enabled phone number." +msgstr "" + +#: actions/smssettings.php:123 +msgid "Awaiting confirmation on this phone number." +msgstr "" + +#: actions/smssettings.php:130 +msgid "Confirmation code" +msgstr "" + +#: actions/smssettings.php:131 +msgid "Enter the code you received on your phone." +msgstr "" + +#: actions/smssettings.php:138 +msgid "SMS Phone number" +msgstr "" + +#: actions/smssettings.php:140 +msgid "Phone number, no punctuation or spaces, with area code" +msgstr "" + +#: actions/smssettings.php:174 +msgid "" +"Send me notices through SMS; I understand I may incur exorbitant charges " +"from my carrier." +msgstr "" + #: actions/smssettings.php:306 msgid "No phone number." msgstr "Žane telefonowe čisło." +#: actions/smssettings.php:311 +msgid "No carrier selected." +msgstr "" + #: actions/smssettings.php:318 msgid "That is already your phone number." msgstr "To je hižo twoje telefonowe čisło." @@ -1605,6 +3276,35 @@ msgstr "To je hižo twoje telefonowe čisło." msgid "That phone number already belongs to another user." msgstr "Te telefonowe čisło hižo druhemu wužiwarjej słuša." +#: actions/smssettings.php:347 +msgid "" +"A confirmation code was sent to the phone number you added. Check your phone " +"for the code and instructions on how to use it." +msgstr "" + +#: actions/smssettings.php:374 +msgid "That is the wrong confirmation number." +msgstr "" + +#: actions/smssettings.php:405 +msgid "That is not your phone number." +msgstr "" + +#: actions/smssettings.php:465 +msgid "Mobile carrier" +msgstr "" + +#: actions/smssettings.php:469 +msgid "Select a carrier" +msgstr "" + +#: actions/smssettings.php:476 +#, 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 "" + #: actions/smssettings.php:498 msgid "No code entered" msgstr "Žadyn kod zapodaty" @@ -1613,6 +3313,10 @@ msgstr "Žadyn kod zapodaty" msgid "You are not subscribed to that profile." msgstr "Njejsy tón profil abonował." +#: actions/subedit.php:83 +msgid "Could not save subscription." +msgstr "" + #: actions/subscribe.php:55 msgid "Not a local user." msgstr "Njeje lokalny wužiwar." @@ -1631,6 +3335,33 @@ msgstr "%s abonentow" msgid "%s subscribers, page %d" msgstr "%s abonentow, strona %d" +#: actions/subscribers.php:63 +msgid "These are the people who listen to your notices." +msgstr "" + +#: actions/subscribers.php:67 +#, php-format +msgid "These are the people who listen to %s's notices." +msgstr "" + +#: actions/subscribers.php:108 +msgid "" +"You have no subscribers. Try subscribing to people you know and they might " +"return the favor" +msgstr "" + +#: actions/subscribers.php:110 +#, php-format +msgid "%s has no subscribers. Want to be the first?" +msgstr "" + +#: actions/subscribers.php:114 +#, 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" @@ -1641,6 +3372,30 @@ msgstr "%s abonementow" msgid "%s subscriptions, page %d" msgstr "%s abonementow, strona %d" +#: actions/subscriptions.php:65 +msgid "These are the people whose notices you listen to." +msgstr "" + +#: actions/subscriptions.php:69 +#, php-format +msgid "These are the people whose notices %s listens to." +msgstr "" + +#: actions/subscriptions.php:121 +#, 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:123 actions/subscriptions.php:127 +#, php-format +msgid "%s is not listening to anyone." +msgstr "" + #: actions/subscriptions.php:194 msgid "Jabber" msgstr "Jabber" @@ -1657,6 +3412,11 @@ msgstr "Njepřizjewjeny" msgid "No id argument." msgstr "Žadyn argument ID." +#: actions/tagother.php:65 +#, php-format +msgid "Tag %s" +msgstr "" + #: actions/tagother.php:77 lib/userprofile.php:75 msgid "User profile" msgstr "Wužiwarski profil" @@ -1665,14 +3425,86 @@ msgstr "Wužiwarski profil" msgid "Photo" msgstr "Foto" +#: actions/tagother.php:141 +msgid "Tag user" +msgstr "" + +#: actions/tagother.php:151 +msgid "" +"Tags for this user (letters, numbers, -, ., and _), comma- or space- " +"separated" +msgstr "" + +#: actions/tagother.php:193 +msgid "" +"You can only tag people you are subscribed to or who are subscribed to you." +msgstr "" + +#: actions/tagother.php:200 +msgid "Could not save tags." +msgstr "" + +#: actions/tagother.php:236 +msgid "Use this form to add tags to your subscribers or subscriptions." +msgstr "" + +#: actions/tag.php:68 +#, php-format +msgid "Notices tagged with %s, page %d" +msgstr "" + +#: actions/tag.php:86 +#, php-format +msgid "Notice feed for tag %s (RSS 1.0)" +msgstr "" + +#: actions/tag.php:92 +#, php-format +msgid "Notice feed for tag %s (RSS 2.0)" +msgstr "" + +#: actions/tag.php:98 +#, php-format +msgid "Notice feed for tag %s (Atom)" +msgstr "" + +#: actions/tagrss.php:35 +msgid "No such tag." +msgstr "" + +#: actions/twitapitrends.php:87 +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 +msgid "No profile id in request." +msgstr "" + +#: actions/unsubscribe.php:84 +msgid "No profile with that id." +msgstr "" + #: actions/unsubscribe.php:98 msgid "Unsubscribed" msgstr "Wotskazany" +#: actions/updateprofile.php:62 actions/userauthorization.php:330 +#, php-format +msgid "Listenee stream license ‘%s’ is not compatible with site license ‘%s’." +msgstr "" + #: actions/useradminpanel.php:58 lib/adminpanelaction.php:305 #: lib/personalgroupnav.php:115 msgid "User" @@ -1682,11 +3514,32 @@ msgstr "Wužiwar" msgid "User settings for this StatusNet site." msgstr "Wužiwarske nastajenja za sydło StatusNet." +#: 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 "" + #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108 #: lib/personalgroupnav.php:109 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 "" + #: actions/useradminpanel.php:231 msgid "New users" msgstr "Nowi wužiwarjo" @@ -1703,6 +3556,10 @@ 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" @@ -1711,6 +3568,10 @@ msgstr "Přeprošenja" msgid "Invitations enabled" msgstr "Přeprošenja zmóžnjene" +#: actions/useradminpanel.php:258 +msgid "Whether to allow users to invite new users." +msgstr "" + #: actions/useradminpanel.php:265 msgid "Sessions" msgstr "Posedźenja" @@ -1719,6 +3580,29 @@ msgstr "Posedźenja" msgid "Handle sessions" msgstr "Z posedźenjemi wobchadźeć" +#: actions/useradminpanel.php:272 +msgid "Whether to handle sessions ourselves." +msgstr "" + +#: actions/useradminpanel.php:276 +msgid "Session debugging" +msgstr "" + +#: actions/useradminpanel.php:278 +msgid "Turn on debugging output for sessions." +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:188 msgid "License" msgstr "Licenca" @@ -1740,31 +3624,707 @@ msgstr "Wotpokazać" msgid "Reject this subscription" msgstr "Tutón abonement wotpokazać" +#: actions/userauthorization.php:225 +msgid "No authorization request!" +msgstr "" + #: actions/userauthorization.php:247 msgid "Subscription authorized" msgstr "Abonement awtorizowany" +#: actions/userauthorization.php:249 +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:259 msgid "Subscription rejected" msgstr "Abonement wotpokazany" -#: lib/command.php:620 -#, fuzzy +#: actions/userauthorization.php:261 +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:296 +#, php-format +msgid "Listener URI ‘%s’ not found here" +msgstr "" + +#: actions/userauthorization.php:301 +#, php-format +msgid "Listenee URI ‘%s’ is too long." +msgstr "" + +#: actions/userauthorization.php:307 +#, php-format +msgid "Listenee URI ‘%s’ is a local user." +msgstr "" + +#: actions/userauthorization.php:322 +#, php-format +msgid "Profile URL ‘%s’ is for a local user." +msgstr "" + +#: actions/userauthorization.php:338 +#, php-format +msgid "Avatar URL ‘%s’ is not valid." +msgstr "" + +#: actions/userauthorization.php:343 +#, php-format +msgid "Can’t read avatar URL ‘%s’." +msgstr "" + +#: actions/userauthorization.php:348 +#, php-format +msgid "Wrong image type for avatar URL ‘%s’." +msgstr "" + +#: actions/userbyid.php:70 +msgid "No id." +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 "" + +#: actions/usergroups.php:64 +#, php-format +msgid "%s groups, page %d" +msgstr "" + +#: actions/usergroups.php:130 +msgid "Search for more groups" +msgstr "" + +#: actions/usergroups.php:153 +#, php-format +msgid "%s is not a member of any group." +msgstr "" + +#: actions/usergroups.php:158 +#, php-format +msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." +msgstr "" + +#: classes/File.php:137 +#, 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." +msgstr "" + +#: classes/File.php:147 +#, php-format +msgid "A file this large would exceed your user quota of %d bytes." +msgstr "" + +#: classes/File.php:154 +#, php-format +msgid "A file this large would exceed your monthly quota of %d bytes." +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." +msgstr "" + +#: classes/Notice.php:164 +#, php-format +msgid "DB error inserting hashtag: %s" +msgstr "" + +#: classes/Notice.php:179 +msgid "Problem saving notice. Too long." +msgstr "" + +#: classes/Notice.php:183 +msgid "Problem saving notice. Unknown user." +msgstr "" + +#: classes/Notice.php:188 +msgid "" +"Too many notices too fast; take a breather and post again in a few minutes." +msgstr "" + +#: classes/Notice.php:194 +msgid "" +"Too many duplicate messages too quickly; take a breather and post again in a " +"few minutes." +msgstr "" + +#: classes/Notice.php:200 +msgid "You are banned from posting notices on this site." +msgstr "" + +#: classes/Notice.php:265 classes/Notice.php:290 +msgid "Problem saving notice." +msgstr "" + +#: classes/Notice.php:1124 +#, php-format +msgid "DB error inserting reply: %s" +msgstr "" + +#: classes/User_group.php:380 +msgid "Could not create group." +msgstr "" + +#: classes/User_group.php:409 +msgid "Could not set group membership." +msgstr "" + +#: classes/User.php:347 +#, php-format +msgid "Welcome to %1$s, @%2$s!" +msgstr "" + +#: lib/accountsettingsaction.php:108 +msgid "Change your profile settings" +msgstr "" + +#: lib/accountsettingsaction.php:112 +msgid "Upload an avatar" +msgstr "" + +#: lib/accountsettingsaction.php:116 +msgid "Change your password" +msgstr "" + +#: lib/accountsettingsaction.php:120 +msgid "Change email handling" +msgstr "" + +#: lib/accountsettingsaction.php:124 +msgid "Design your profile" +msgstr "" + +#: lib/accountsettingsaction.php:128 +msgid "Other" +msgstr "" + +#: lib/accountsettingsaction.php:128 +msgid "Other options" +msgstr "" + +#: lib/action.php:144 +#, php-format +msgid "%s - %s" +msgstr "" + +#: lib/action.php:159 +msgid "Untitled page" +msgstr "" + +#: lib/action.php:425 +msgid "Primary site navigation" +msgstr "" + +#: lib/action.php:431 +msgid "Home" +msgstr "" + +#: lib/action.php:431 +msgid "Personal profile and friends timeline" +msgstr "" + +#: lib/action.php:433 +msgid "Account" +msgstr "" + +#: lib/action.php:433 +msgid "Change your email, avatar, password, profile" +msgstr "" + +#: lib/action.php:436 +msgid "Connect" +msgstr "" + +#: lib/action.php:436 +msgid "Connect to services" +msgstr "" + +#: lib/action.php:440 +msgid "Change site configuration" +msgstr "" + +#: lib/action.php:444 lib/subgroupnav.php:105 +msgid "Invite" +msgstr "" + +#: lib/action.php:445 lib/subgroupnav.php:106 +#, php-format +msgid "Invite friends and colleagues to join you on %s" +msgstr "" + +#: lib/action.php:450 +msgid "Logout" +msgstr "" + +#: lib/action.php:450 +msgid "Logout from the site" +msgstr "" + +#: lib/action.php:455 +msgid "Create an account" +msgstr "" + +#: lib/action.php:458 +msgid "Login to the site" +msgstr "" + +#: lib/action.php:461 lib/action.php:724 +msgid "Help" +msgstr "" + +#: lib/action.php:461 +msgid "Help me!" +msgstr "" + +#: lib/action.php:464 lib/searchaction.php:127 +msgid "Search" +msgstr "" + +#: lib/action.php:464 +msgid "Search for people or text" +msgstr "" + +#: lib/action.php:485 +msgid "Site notice" +msgstr "" + +#: lib/action.php:551 +msgid "Local views" +msgstr "" + +#: lib/action.php:617 +msgid "Page notice" +msgstr "" + +#: lib/action.php:719 +msgid "Secondary site navigation" +msgstr "" + +#: lib/action.php:726 +msgid "About" +msgstr "" + +#: lib/action.php:728 +msgid "FAQ" +msgstr "" + +#: lib/action.php:732 +msgid "TOS" +msgstr "" + +#: lib/action.php:735 +msgid "Privacy" +msgstr "" + +#: lib/action.php:737 +msgid "Source" +msgstr "" + +#: lib/action.php:739 +msgid "Contact" +msgstr "" + +#: lib/action.php:741 +msgid "Badge" +msgstr "" + +#: lib/action.php:769 +msgid "StatusNet software license" +msgstr "" + +#: lib/action.php:772 +#, php-format +msgid "" +"**%%site.name%%** is a microblogging service brought to you by [%%site." +"broughtby%%](%%site.broughtbyurl%%). " +msgstr "" + +#: lib/action.php:774 +#, php-format +msgid "**%%site.name%%** is a microblogging service. " +msgstr "" + +#: lib/action.php:776 +#, 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 "" + +#: lib/action.php:790 +msgid "Site content license" +msgstr "" + +#: lib/action.php:799 +msgid "All " +msgstr "" + +#: lib/action.php:804 +msgid "license." +msgstr "" + +#: lib/action.php:1068 +msgid "Pagination" +msgstr "" + +#: lib/action.php:1077 +msgid "After" +msgstr "" + +#: lib/action.php:1085 +msgid "Before" +msgstr "" + +#: lib/action.php:1133 +msgid "There was a problem with your session token." +msgstr "" + +#: lib/adminpanelaction.php:96 +msgid "You cannot make changes to this site." +msgstr "" + +#: lib/adminpanelaction.php:195 +msgid "showForm() not implemented." +msgstr "" + +#: lib/adminpanelaction.php:224 +msgid "saveSettings() not implemented." +msgstr "" + +#: lib/adminpanelaction.php:247 +msgid "Unable to delete design setting." +msgstr "" + +#: lib/adminpanelaction.php:300 +msgid "Basic site configuration" +msgstr "" + +#: lib/adminpanelaction.php:303 +msgid "Design configuration" +msgstr "" + +#: lib/adminpanelaction.php:306 lib/adminpanelaction.php:309 +msgid "Paths configuration" +msgstr "" + +#: lib/attachmentlist.php:87 +msgid "Attachments" +msgstr "" + +#: lib/attachmentlist.php:265 +msgid "Author" +msgstr "" + +#: lib/attachmentlist.php:278 +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/channel.php:138 lib/channel.php:158 +msgid "Command results" +msgstr "" + +#: lib/channel.php:210 +msgid "Command complete" +msgstr "" + +#: lib/channel.php:221 +msgid "Command failed" +msgstr "" + +#: lib/command.php:44 +msgid "Sorry, this command is not yet implemented." +msgstr "" + +#: lib/command.php:88 +#, php-format +msgid "Could not find a user with nickname %s" +msgstr "" + +#: lib/command.php:92 +msgid "It does not make a lot of sense to nudge yourself!" +msgstr "" + +#: lib/command.php:99 +#, php-format +msgid "Nudge sent to %s" +msgstr "" + +#: lib/command.php:126 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" + +#: lib/command.php:152 lib/command.php:400 +msgid "Notice with that id does not exist" +msgstr "" + +#: lib/command.php:168 lib/command.php:416 lib/command.php:471 +msgid "User has no last notice" +msgstr "" + +#: lib/command.php:190 +msgid "Notice marked as fave." +msgstr "" + +#: lib/command.php:315 +#, php-format +msgid "%1$s (%2$s)" +msgstr "" + +#: lib/command.php:318 +#, php-format +msgid "Fullname: %s" +msgstr "" + +#: lib/command.php:321 +#, php-format +msgid "Location: %s" +msgstr "" + +#: lib/command.php:324 +#, php-format +msgid "Homepage: %s" +msgstr "" + +#: lib/command.php:327 +#, php-format +msgid "About: %s" +msgstr "" + +#: lib/command.php:358 scripts/xmppdaemon.php:321 +#, php-format +msgid "Message too long - maximum is %d characters, you sent %d" +msgstr "" + +#: lib/command.php:377 +msgid "Error sending direct message." +msgstr "" + +#: lib/command.php:431 +#, php-format +msgid "Notice too long - maximum is %d characters, you sent %d" +msgstr "" + +#: lib/command.php:439 +#, php-format +msgid "Reply to %s sent" +msgstr "" + +#: lib/command.php:441 +msgid "Error saving notice." +msgstr "" + +#: lib/command.php:495 +msgid "Specify the name of the user to subscribe to" +msgstr "" + +#: lib/command.php:502 +#, php-format +msgid "Subscribed to %s" +msgstr "" + +#: lib/command.php:523 +msgid "Specify the name of the user to unsubscribe from" +msgstr "" + +#: lib/command.php:530 +#, php-format +msgid "Unsubscribed from %s" +msgstr "" + +#: lib/command.php:548 lib/command.php:571 +msgid "Command not yet implemented." +msgstr "" + +#: lib/command.php:551 +msgid "Notification off." +msgstr "" + +#: lib/command.php:553 +msgid "Can't turn off notification." +msgstr "" + +#: lib/command.php:574 +msgid "Notification on." +msgstr "" + +#: lib/command.php:576 +msgid "Can't turn on notification." +msgstr "" + +#: lib/command.php:592 +msgid "You are not subscribed to anyone." +msgstr "" + +#: lib/command.php:594 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -# Plural problem +msgstr[0] "Sy tutu wosobu abonował:" +msgstr[1] "Sy tutej wosobje abonował:" +msgstr[2] "Sy tute wosoby abonował:" +msgstr[3] "Sy tute wosoby abonował:" -#: lib/command.php:642 -#, fuzzy +#: lib/command.php:614 +msgid "No one is subscribed to you." +msgstr "" + +#: lib/command.php:616 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -# Plural problem +msgstr[0] "Tuta wosoba je će abonowała:" +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:664 -#, fuzzy +#: lib/command.php:636 +msgid "You are not a member of any groups." +msgstr "" + +#: lib/command.php:638 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -# Plural problem +msgstr[0] "Sy čłon tuteje skupiny:" +msgstr[1] "Sy čłon tuteju skupinow:" +msgstr[2] "Sy čłon tutych skupinow:" +msgstr[3] "Sy čłon tutych skupinow:" + +#: lib/command.php:652 +msgid "" +"Commands:\n" +"on - turn on notifications\n" +"off - turn off notifications\n" +"help - show this help\n" +"follow - 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 - unsubscribe from user\n" +"d - direct message to user\n" +"get - get last notice from user\n" +"whois - get profile info on user\n" +"fav - add user's last notice as a 'fave'\n" +"fav # - add notice with the given id as a 'fave'\n" +"reply # - reply to notice with a given id\n" +"reply - reply to the last notice from user\n" +"join - join group\n" +"drop - leave group\n" +"stats - get your stats\n" +"stop - same as 'off'\n" +"quit - same as 'off'\n" +"sub - same as 'follow'\n" +"unsub - same as 'leave'\n" +"last - same as 'get'\n" +"on - not yet implemented.\n" +"off - not yet implemented.\n" +"nudge - remind a user to update.\n" +"invite - not yet implemented.\n" +"track - not yet implemented.\n" +"untrack - 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:199 +msgid "No configuration file found. " +msgstr "" + +#: lib/common.php:200 +msgid "I looked for configuration files in the following places: " +msgstr "" + +#: lib/common.php:201 +msgid "You may wish to run the installer to fix this." +msgstr "" + +#: lib/common.php:202 +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/designsettings.php:105 +msgid "Upload file" +msgstr "" + +#: lib/designsettings.php:109 +msgid "" +"You can upload your personal background image. The maximum file size is 2MB." +msgstr "" + +#: lib/designsettings.php:418 +msgid "Design defaults restored." +msgstr "" + +#: lib/disfavorform.php:114 lib/disfavorform.php:140 +msgid "Disfavor this notice" +msgstr "" + +#: lib/favorform.php:114 lib/favorform.php:140 +msgid "Favor this notice" +msgstr "" + +#: lib/favorform.php:140 +msgid "Favor" +msgstr "" + +#: lib/feedlist.php:64 +msgid "Export data" +msgstr "" #: lib/feed.php:85 msgid "RSS 1.0" @@ -1782,10 +4342,34 @@ msgstr "Atom" msgid "FOAF" msgstr "FOAF" +#: lib/galleryaction.php:121 +msgid "Filter tags" +msgstr "" + #: lib/galleryaction.php:131 msgid "All" msgstr "Wšě" +#: 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/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ć" @@ -1799,6 +4383,16 @@ msgstr "Skupinu abo temu w %d znamješkach wopisać" msgid "Description" msgstr "Wopisanje" +#: lib/groupeditform.php:179 +msgid "" +"Location for the group, if any, like \"City, State (or Region), Country\"" +msgstr "" + +#: lib/groupeditform.php:187 +#, php-format +msgid "Extra nicknames for the group, comma- or space- separated, max %d" +msgstr "" + #: lib/groupnav.php:85 msgid "Group" msgstr "Skupina" @@ -1807,10 +4401,30 @@ 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 "" + #: lib/groupnav.php:113 msgid "Logo" msgstr "Logo" +#: lib/groupnav.php:114 +#, php-format +msgid "Add or edit %s logo" +msgstr "" + +#: lib/groupnav.php:120 +#, php-format +msgid "Add or edit %s design" +msgstr "" + #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Skupiny z najwjace čłonami" @@ -1819,10 +4433,36 @@ 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 "" + +#: lib/htmloutputter.php:103 +msgid "This page is not available in a media type you accept" +msgstr "" + +#: lib/imagefile.php:75 +#, php-format +msgid "That file is too big. The maximum file size is %s." +msgstr "" + #: lib/imagefile.php:80 msgid "Partial upload." msgstr "Dźělne nahraće." +#: lib/imagefile.php:88 lib/mediafile.php:170 +msgid "System error uploading file." +msgstr "" + +#: lib/imagefile.php:96 +msgid "Not an image or corrupt file." +msgstr "" + +#: lib/imagefile.php:105 +msgid "Unsupported image file format." +msgstr "" + #: lib/imagefile.php:118 msgid "Lost our file." msgstr "Naša dataja je so zhubiła." @@ -1831,11 +4471,23 @@ msgstr "Naša dataja je so zhubiła." msgid "Unknown file type" msgstr "Njeznaty datajowy typ" -#: lib/jabber.php:192 +#: lib/imagefile.php:217 +msgid "MB" +msgstr "" + +#: lib/imagefile.php:219 +msgid "kB" +msgstr "" + +#: lib/jabber.php:191 #, php-format msgid "[%s]" msgstr "[%s]" +#: lib/joinform.php:114 +msgid "Join" +msgstr "" + #: lib/leaveform.php:114 msgid "Leave" msgstr "Wopušćić" @@ -1848,6 +4500,16 @@ msgstr "Přizjewjenje z wužiwarskim mjenom a hesłom" msgid "Sign up for a new account" msgstr "Nowe konto registrować" +#: 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:452 msgid "from" msgstr "wot" @@ -1856,6 +4518,43 @@ msgstr "wot" msgid "Email address confirmation" msgstr "Wobkrućenje e-mejloweje adresy" +#: lib/mail.php:174 +#, 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:236 +#, php-format +msgid "%1$s is now listening to your notices on %2$s." +msgstr "" + +#: lib/mail.php:241 +#, 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 "" + #: lib/mail.php:254 #, php-format msgid "Location: %s\n" @@ -1868,23 +4567,145 @@ msgstr "Startowa strona: %s\n" #: lib/mail.php:258 #, php-format -msgid "Bio: %s\n\n" -msgstr "Biografija: %s\n\n" +msgid "" +"Bio: %s\n" +"\n" +msgstr "" +"Biografija: %s\n" +"\n" + +#: lib/mail.php:286 +#, php-format +msgid "New email address for posting to %s" +msgstr "" + +#: lib/mail.php:289 +#, 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 "" + +#: lib/mail.php:413 +#, php-format +msgid "%s status" +msgstr "" #: lib/mail.php:439 msgid "SMS confirmation" msgstr "SMS-wobkrućenje" +#: lib/mail.php:463 +#, php-format +msgid "You've been nudged by %s" +msgstr "" + +#: lib/mail.php:467 +#, 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 "" + #: lib/mail.php:510 #, php-format msgid "New private message from %s" msgstr "Nowa priwatna powěsć wot %s" +#: lib/mail.php:514 +#, 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 "" + #: lib/mail.php:559 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) je twoju zdźělenku jako faworit přidał" +#: lib/mail.php:561 +#, 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 "" + +#: lib/mail.php:620 +#, php-format +msgid "%s (@%s) sent a notice to your attention" +msgstr "" + +#: lib/mail.php:622 +#, 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" +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 "Nahrata dataja bu jenož zdźěla nahrata." @@ -1893,6 +4714,31 @@ msgstr "Nahrata dataja bu jenož zdźěla nahrata." msgid "Missing a temporary folder." msgstr "Temporerny rjadowka faluje." +#: 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:216 +msgid "File exceeds user's quota!" +msgstr "" + +#: lib/mediafile.php:196 lib/mediafile.php:233 +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 +#, php-format +msgid " Try using another %s format." +msgstr "" + #: lib/mediafile.php:275 #, php-format msgid "%s is not a supported filetype on this server." @@ -1906,7 +4752,7 @@ msgstr "Direktnu zdźělenku pósłać" msgid "To" msgstr "Komu" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "K dispoziciji stejace znamješka" @@ -1914,11 +4760,16 @@ msgstr "K dispoziciji stejace znamješka" msgid "Send a notice" msgstr "Zdźělenku pósłać" -#: lib/noticeform.php:193 +#: lib/noticeform.php:171 +#, php-format +msgid "What's up, %s?" +msgstr "" + +#: lib/noticeform.php:192 msgid "Attach" msgstr "Připowěsnyć" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Dataju připowěsnyć" @@ -1943,6 +4794,14 @@ msgstr "W" msgid "W" msgstr "Z" +#: lib/noticelist.php:411 +msgid "at" +msgstr "" + +#: lib/noticelist.php:506 +msgid "in context" +msgstr "" + #: lib/noticelist.php:526 msgid "Reply to this notice" msgstr "Na tutu zdźělenku wotmołwić" @@ -1951,6 +4810,18 @@ msgstr "Na tutu zdźělenku wotmołwić" msgid "Reply" msgstr "Wotmołwić" +#: 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" @@ -1967,6 +4838,14 @@ msgstr "Zmylk při zasunjenju zdaleneho profila" msgid "Duplicate notice" msgstr "Dwójna zdźělenka" +#: lib/oauthstore.php:467 lib/subs.php:48 +msgid "You have been banned from subscribing." +msgstr "" + +#: lib/oauthstore.php:492 +msgid "Couldn't insert new subscription." +msgstr "" + #: lib/personalgroupnav.php:99 msgid "Personal" msgstr "Wosobinski" @@ -1979,15 +4858,28 @@ msgstr "Wotmołwy" msgid "Favorites" msgstr "Fawority" +#: lib/personalgroupnav.php:124 +msgid "Inbox" +msgstr "" + #: lib/personalgroupnav.php:125 msgid "Your incoming messages" msgstr "Twoje dochadźace powěsće" +#: lib/personalgroupnav.php:129 +msgid "Outbox" +msgstr "" + #: lib/personalgroupnav.php:130 msgid "Your sent messages" msgstr "Twoje pósłane powěsće" -#: lib/profileaction.php:109 lib/profileaction.php:191 lib/subgroupnav.php:82 +#: lib/personaltagcloudsection.php:56 +#, php-format +msgid "Tags in %s's notices" +msgstr "" + +#: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "Abonementy" @@ -1995,7 +4887,7 @@ msgstr "Abonementy" msgid "All subscriptions" msgstr "Wšě abonementy" -#: lib/profileaction.php:140 lib/profileaction.php:200 lib/subgroupnav.php:90 +#: lib/profileaction.php:140 lib/profileaction.php:201 lib/subgroupnav.php:90 msgid "Subscribers" msgstr "Abonenća" @@ -2003,18 +4895,26 @@ msgstr "Abonenća" msgid "All subscribers" msgstr "Wšitcy abonenća" -#: lib/profileaction.php:177 +#: lib/profileaction.php:178 msgid "User ID" msgstr "Wužiwarski ID" -#: lib/profileaction.php:182 +#: lib/profileaction.php:183 msgid "Member since" msgstr "Čłon wot" -#: lib/profileaction.php:235 +#: lib/profileaction.php:245 msgid "All groups" msgstr "Wšě skupiny" +#: lib/profileformaction.php:123 +msgid "No return-to arguments" +msgstr "" + +#: lib/profileformaction.php:137 +msgid "unimplemented method" +msgstr "" + #: lib/publicgroupnav.php:78 msgid "Public" msgstr "Zjawny" @@ -2023,10 +4923,26 @@ msgstr "Zjawny" msgid "User groups" msgstr "Wužiwarske skupiny" +#: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 +msgid "Recent tags" +msgstr "" + +#: lib/publicgroupnav.php:88 +msgid "Featured" +msgstr "" + #: lib/publicgroupnav.php:92 msgid "Popular" msgstr "Woblubowany" +#: lib/sandboxform.php:67 +msgid "Sandbox" +msgstr "" + +#: lib/sandboxform.php:78 +msgid "Sandbox this user" +msgstr "" + #: lib/searchaction.php:120 msgid "Search site" msgstr "Pytanske sydło" @@ -2063,6 +4979,39 @@ 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 "" + +#: 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/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/subscriptionlist.php:126 msgid "(none)" msgstr "(žadyn)" @@ -2079,11 +5028,20 @@ msgstr "Wužiwar je će zablokował." msgid "Could not subscribe." msgstr "Abonowanje njebě móžno" +#: lib/subs.php:79 +msgid "Could not subscribe other to you." +msgstr "" + #: lib/subs.php:128 msgid "Not subscribed!" msgstr "Njeje abonowany!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Abonoment njeje so dał zničić." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Abonoment njeje so dał zničić." @@ -2091,6 +5049,26 @@ msgstr "Abonoment njeje so dał zničić." msgid "None" msgstr "Žadyn" +#: 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 "Tutoho wužiwarja wotskazać" @@ -2123,6 +5101,10 @@ msgstr "Tutomu wužiwarja direktnu powěsć pósłać" msgid "Message" msgstr "Powěsć" +#: lib/userprofile.php:311 +msgid "Moderate" +msgstr "" + #: lib/util.php:825 msgid "a few seconds ago" msgstr "před něšto sekundami" @@ -2175,7 +5157,13 @@ msgstr "%s płaćiwa barba njeje!" #: lib/webcolor.php:123 #, php-format 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." +msgstr "" +"%s płaćiwa barba njeje! Wužij 3 heksadecimalne znamješka abo 6 " +"heksadecimalnych znamješkow." + +#: scripts/maildaemon.php:48 +msgid "Could not parse message." +msgstr "" #: scripts/maildaemon.php:53 msgid "Not a registered user." @@ -2188,4 +5176,3 @@ msgstr "Wodaj, to twoja adresa za dochadźace e-mejle njeje." #: scripts/maildaemon.php:61 msgid "Sorry, no incoming email allowed." msgstr "Wodaj, dochadźaće e-mejle njejsu dowolene." - diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index 5cb39db107..e27212ed11 100644 --- a/locale/is/LC_MESSAGES/statusnet.po +++ b/locale/is/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:52+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:31+0000\n" "Language-Team: Icelandic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: is\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "Notandi hefur enga persónulega síðu." msgid "Could not save profile." msgstr "Gat ekki vistað persónulega síðu." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Gat ekki uppfært notanda." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Mistókst að loka á notanda." @@ -823,106 +828,106 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Ótæk stærð." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Þessi síða er ekki aðgengileg í " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Breyta" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Bjóða" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Breyta" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Babl vefsíðunnar" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Skrá þig út af síðunni" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, 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." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texti" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -932,7 +937,7 @@ msgstr "" msgid "Save" msgstr "Vista" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1365,18 +1370,18 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" @@ -1691,7 +1696,7 @@ msgstr "Persónuleg skilaboð" msgid "Optionally add a personal message to the invitation." msgstr "Bættu persónulegum skilaboðum við boðskortið ef þú vilt." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Senda" @@ -2017,8 +2022,8 @@ msgstr "" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Enginn stuðningur við gagnasnið." @@ -4511,11 +4516,7 @@ 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:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4974,7 +4975,7 @@ msgstr "Senda bein skilaboð" msgid "To" msgstr "Til" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Leyfileg tákn" @@ -4987,11 +4988,11 @@ msgstr "Senda babl" msgid "What's up, %s?" msgstr "Hvað er að frétta %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5267,7 +5268,12 @@ msgstr "Gat ekki leyft öðrum að gerast áskrifandi að þér." msgid "Not subscribed!" msgstr "Ekki í áskrift!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Gat ekki eytt áskrift." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Gat ekki eytt áskrift." diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index 79b6ef8c09..da538e1a27 100644 --- a/locale/it/LC_MESSAGES/statusnet.po +++ b/locale/it/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:56+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:34+0000\n" "Language-Team: Italian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: it\n" "X-Message-Group: out-statusnet\n" @@ -185,7 +185,12 @@ msgstr "L'utente non ha un profilo." msgid "Could not save profile." msgstr "Impossibile salvare il profilo." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Impossibile aggiornare l'utente." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Blocco dell'utente non riuscito." @@ -838,110 +843,110 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Dimensione non valida." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Questa pagina non è disponibile in un " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Modifica la tua password" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Invita" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Modifica" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Messaggio del sito" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Sconnettiti dal sito" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Puoi caricare un'immagine per il logo del tuo gruppo." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Modifica la tua password" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Connetti" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Ricerca" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Testo" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Elenco" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -951,7 +956,7 @@ msgstr "" msgid "Save" msgstr "Salva" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1400,20 +1405,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Impossibile aggiornare l'utente." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Impossibile salvare le tue impostazioni di Twitter!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Preferenze di sincronizzazione salvate." @@ -1736,7 +1741,7 @@ msgstr "Messaggio personale" msgid "Optionally add a personal message to the invitation." msgstr "Puoi aggiungere un messaggio personale agli inviti." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Invia" @@ -2060,8 +2065,8 @@ msgstr "Connetti" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Non è un formato di dati supportato." @@ -4582,11 +4587,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Qui puoi caricare la tua immagine personale." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5050,7 +5051,7 @@ msgstr "Invia un messaggio diretto" msgid "To" msgstr "A" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Caratteri disponibili" @@ -5063,11 +5064,11 @@ msgstr "Invia un messaggio" msgid "What's up, %s?" msgstr "Cosa succede, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5347,7 +5348,12 @@ msgstr "Impossibile abbonare altri a te." msgid "Not subscribed!" msgstr "Non abbonato!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Impossibile eliminare l'abbonamento." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Impossibile eliminare l'abbonamento." diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index 5317bc7a3a..43f6fcec79 100644 --- a/locale/ja/LC_MESSAGES/statusnet.po +++ b/locale/ja/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:19:59+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:37+0000\n" "Language-Team: Japanese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ja\n" "X-Message-Group: out-statusnet\n" @@ -189,7 +189,12 @@ msgstr "プロファイルがありません。" msgid "Could not save profile." msgstr "プロファイルを保存できません" -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "ユーザを更新できません" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "ユーザのブロックに失敗しました。" @@ -839,109 +844,109 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "不正なサイズ。" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "このページはあなたが承認したメディアタイプでは利用できません。" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "パスワードの変更" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "新しい通知" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "変更" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "新しい通知" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "サイトからログアウト" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "長すぎます。通知は最大 140 字までです。" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "パスワードの変更" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "内容" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "検索" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "ログイン" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -951,7 +956,7 @@ msgstr "" msgid "Save" msgstr "保存" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1396,19 +1401,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "ユーザを更新できません" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "設定が保存されました。" @@ -1722,7 +1727,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "送る" @@ -2040,8 +2045,8 @@ msgstr "内容種別 " msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4530,11 +4535,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "長すぎます。通知は最大 140 字までです。" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4989,7 +4990,7 @@ msgstr "直接通知を送る" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "利用可能な文字" @@ -5002,11 +5003,11 @@ msgstr "通知を送る" msgid "What's up, %s?" msgstr "最近どう %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5284,7 +5285,12 @@ msgstr "" msgid "Not subscribed!" msgstr "購読していません!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "サブスクリプションを削除できません" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "サブスクリプションを削除できません" diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index 60ac94a30b..2de8e46d53 100644 --- a/locale/ko/LC_MESSAGES/statusnet.po +++ b/locale/ko/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:03+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:40+0000\n" "Language-Team: Korean\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ko\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "이용자가 프로필을 가지고 있지 않습니다." msgid "Could not save profile." msgstr "프로필을 저장 할 수 없습니다." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "사용자를 업데이트 할 수 없습니다." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "사용자 차단에 실패했습니다." @@ -836,110 +841,110 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "옳지 않은 크기" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "이 페이지는 귀하가 승인한 미디어 타입에서는 이용할 수 없습니다." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "비밀번호 바꾸기" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "초대" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "변환" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "사이트 공지" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "이 사이트로부터 로그아웃" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "당신그룹의 로고 이미지를 업로드할 수 있습니다." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "비밀번호 바꾸기" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "연결" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "검색" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "문자" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "로그인" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -949,7 +954,7 @@ msgstr "" msgid "Save" msgstr "저장" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1393,20 +1398,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "사용자를 업데이트 할 수 없습니다." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "트위터 환경설정을 저장할 수 없습니다." -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "싱크설정이 저장되었습니다." @@ -1722,7 +1727,7 @@ msgstr "개인적인 메시지" msgid "Optionally add a personal message to the invitation." msgstr "초대장에 메시지 첨부하기." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "보내기" @@ -2040,8 +2045,8 @@ msgstr "연결" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "지원하는 형식의 데이터가 아닙니다." @@ -4541,11 +4546,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "당신의 개인적인 아바타를 업로드할 수 있습니다." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5001,7 +5002,7 @@ msgstr "직접 메시지 보내기" msgid "To" msgstr "에게" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "사용 가능한 글자" @@ -5014,11 +5015,11 @@ msgstr "게시글 보내기" msgid "What's up, %s?" msgstr "뭐하세요? %?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5298,7 +5299,12 @@ msgstr "다른 사람을 구독 하실 수 없습니다." msgid "Not subscribed!" msgstr "구독하고 있지 않습니다!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "예약 구독을 삭제 할 수 없습니다." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "예약 구독을 삭제 할 수 없습니다." diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 94511070d3..011c434cac 100644 --- a/locale/mk/LC_MESSAGES/statusnet.po +++ b/locale/mk/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:07+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:43+0000\n" "Language-Team: Macedonian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: mk\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "Корисникот нема профил." msgid "Could not save profile." msgstr "Профилот не може да се сними." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Корисникот не може да се освежи/" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -832,109 +837,109 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Погрешна големина." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Оваа страница не е достапна во форматот кој Вие го прифаќате." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Промени ја лозинката" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Ново известување" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Промени" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Ново известување" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Ова е предолго. Максималната должина е 140 знаци." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Промени ја лозинката" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Поврзи се" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Барај" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Пријави се" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -944,7 +949,7 @@ msgstr "" msgid "Save" msgstr "Сними" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1384,19 +1389,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Корисникот не може да се освежи/" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Преференциите се снимени." @@ -1712,7 +1717,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Испрати" @@ -2010,8 +2015,8 @@ msgstr "Поврзи се" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4501,11 +4506,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Ова е предолго. Максималната должина е 140 знаци." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4968,7 +4969,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 или повеќе знаци" @@ -4983,11 +4984,11 @@ msgstr "Ново известување" msgid "What's up, %s?" msgstr "Што има %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5266,7 +5267,12 @@ msgstr "" msgid "Not subscribed!" msgstr "Не сте претплатени!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Претплата не може да се избрише." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Претплата не може да се избрише." diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index e6eb1e5d17..4a8ed64274 100644 --- a/locale/nb/LC_MESSAGES/statusnet.po +++ b/locale/nb/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:10+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:46+0000\n" "Language-Team: Norwegian (bokmål)‬\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: no\n" "X-Message-Group: out-statusnet\n" @@ -183,7 +183,12 @@ msgstr "" msgid "Could not save profile." msgstr "Klarte ikke å lagre profil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Klarte ikke å oppdatere bruker." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -828,108 +833,108 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Ugyldig størrelse" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Endre passordet ditt" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Endre" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Endre" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Endre passordet ditt" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Koble til" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Søk" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Logg inn" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -939,7 +944,7 @@ msgstr "" msgid "Save" msgstr "Lagre" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1374,19 +1379,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Klarte ikke å oppdatere bruker." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" @@ -1689,7 +1694,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Send" @@ -1998,8 +2003,8 @@ msgstr "" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4444,11 +4449,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4910,7 +4911,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 eller flere tegn" @@ -4924,11 +4925,11 @@ msgstr "" msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5204,7 +5205,12 @@ msgstr "" msgid "Not subscribed!" msgstr "Alle abonnementer" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Klarte ikke å lagre avatar-informasjonen" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "" diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index e9c4ef9e79..85f3cb655e 100644 --- a/locale/nl/LC_MESSAGES/statusnet.po +++ b/locale/nl/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:26+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:52+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nl\n" "X-Message-Group: out-statusnet\n" @@ -192,7 +192,12 @@ msgstr "Deze gebruiker heeft geen profiel." msgid "Could not save profile." msgstr "Het was niet mogelijk het profiel op te slaan." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "U kunt het abonnement op uzelf niet opzeggen." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Het blokkeren van de gebruiker is mislukt." @@ -839,45 +844,45 @@ msgstr "Ontwerp" msgid "Design settings for this StatusNet site." msgstr "Instellingen voor de vormgeving van deze StatusNet-website." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "De logo-URL is ongeldig." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "De vormgeving is niet beschikbaar: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Logo wijzigen" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Websitelogo" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Vormgeving wijzigen" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Vormgeving website" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Mogelijke vormgevingen voor deze website." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Achtergrondafbeelding wijzigen" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Achtergrond" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -886,55 +891,55 @@ msgstr "" "Hier kunt u een achtergrondafbeelding voor de website uploaden. De maximale " "bestandsgrootte is %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Aan" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Uit" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Achtergrondafbeelding inschakelen of uitschakelen." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Achtergrondafbeelding naast elkaar" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Kleuren wijzigen" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Inhoud" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Menubalk" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Verwijzingen" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Standaardinstellingen gebruiken" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standaardontwerp toepassen" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Standaardinstellingen toepassen" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -944,7 +949,7 @@ msgstr "Standaardinstellingen toepassen" msgid "Save" msgstr "Opslaan" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Ontwerp opslaan" @@ -1391,18 +1396,18 @@ msgstr "" "De vormgeving van uw groep aanpassen met een achtergrondafbeeldingen en een " "kleurenpalet van uw keuze." -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Het was niet mogelijk uw ontwerp bij te werken." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings!" msgstr "Het was niet mogelijk om uw ontwerpinstellingen op te slaan!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "De ontwerpvoorkeuren zijn opgeslagen." @@ -1732,7 +1737,7 @@ msgstr "Persoonlijk bericht" msgid "Optionally add a personal message to the invitation." msgstr "Persoonlijk bericht bij de uitnodiging (optioneel)." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Verzenden" @@ -2058,8 +2063,8 @@ msgstr "inhoudstype " msgid "Only " msgstr "Alleen " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Geen ondersteund gegevensformaat." @@ -2854,11 +2859,10 @@ msgid "Invalid profile URL (bad format)" msgstr "Ongeldige profiel-URL (foutieve opmaak)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" -"De URL voor het profiel is niet geldig (het is geen YADIS-document of er is " -"geen of ongeldige XRDS gedefinieerd)." +"De URL is niet geldig (het is geen YADIS-document of er een ongeldige XRDS " +"gedefinieerd)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -4523,7 +4527,6 @@ msgstr[0] "U bent lid van deze groep:" msgstr[1] "U bent lid van deze groepen:" #: lib/command.php:652 -#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4579,7 +4582,6 @@ msgstr "" "reply # - antwoorden op de mededeling met het aangegeven ID\n" "reply - antwoorden op de laatste mededeling van gebruiker\n" "join - lid worden van groep\n" -"login - verwijzing opvragen naar de webpagina voor aanmelden\n" "drop - groepslidmaatschap opzeggen\n" "stats - uw statistieken opvragen\n" "stop - zelfde als 'off'\n" @@ -4642,11 +4644,7 @@ msgstr "" "U kunt een persoonlijke achtergrondafbeelding uploaden. De maximale " "bestandsgrootte is 2 megabyte." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Foutieve standaard kleurinstellingen: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Het standaardontwerp is weer ingesteld." @@ -5187,7 +5185,7 @@ msgstr "Directe mededeling verzenden" msgid "To" msgstr "Aan" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Beschikbare tekens" @@ -5200,11 +5198,11 @@ msgstr "Mededeling verzenden" msgid "What's up, %s?" msgstr "Hallo, %s." -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Toevoegen" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Bestand toevoegen" @@ -5472,7 +5470,12 @@ msgstr "Het was niet mogelijk om een ander op u te laten abonneren" msgid "Not subscribed!" msgstr "Niet geabonneerd!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Kon abonnement niet verwijderen." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Kon abonnement niet verwijderen." diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index fdae960a36..6ce0460ca3 100644 --- a/locale/nn/LC_MESSAGES/statusnet.po +++ b/locale/nn/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:13+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:49+0000\n" "Language-Team: Norwegian Nynorsk\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nn\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "Brukaren har inga profil." msgid "Could not save profile." msgstr "Kan ikkje lagra profil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Kan ikkje oppdatera brukar." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Blokkering av brukar feila." @@ -835,110 +840,110 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Ugyldig storleik." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Denne sida er ikkje tilgjengleg i eit" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Endra passordet ditt" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Invitér" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Endra" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Statusmelding" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Logg ut or sida" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, 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." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Endra passordet ditt" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Kopla til" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Søk" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Logg inn" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -948,7 +953,7 @@ msgstr "" msgid "Save" msgstr "Lagra" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1393,20 +1398,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 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:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Klarte ikkje å lagra Twitter-innstillingane dine!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Synkroniserings innstillingar blei lagra." @@ -1724,7 +1729,7 @@ msgstr "Personleg melding" msgid "Optionally add a personal message to the invitation." msgstr "Eventuelt legg til ei personleg melding til invitasjonen." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Send" @@ -2045,8 +2050,8 @@ msgstr "Kopla til" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Ikkje eit støtta dataformat." @@ -4561,11 +4566,7 @@ 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:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5028,7 +5029,7 @@ msgstr "Send ei direkte melding" msgid "To" msgstr "Til" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Tilgjenglege teikn" @@ -5041,11 +5042,11 @@ msgstr "Send ei melding" msgid "What's up, %s?" msgstr "Kva skjer, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5325,7 +5326,12 @@ msgstr "Kan ikkje tinga andre til deg." msgid "Not subscribed!" msgstr "Ikkje tinga." -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Kan ikkje sletta tinging." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Kan ikkje sletta tinging." diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index 62d92064cc..33013c7af8 100644 --- a/locale/pl/LC_MESSAGES/statusnet.po +++ b/locale/pl/LC_MESSAGES/statusnet.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:31+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:56+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pl\n" "X-Message-Group: out-statusnet\n" @@ -194,7 +194,12 @@ msgstr "Użytkownik nie posiada profilu." msgid "Could not save profile." msgstr "Nie można zapisać profilu." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Nie można zrezygnować z obserwacji samego siebie." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Zablokowanie użytkownika nie powiodło się." @@ -828,100 +833,100 @@ msgstr "Wygląd" msgid "Design settings for this StatusNet site." msgstr "Ustawienia wyglądu tej strony StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "Nieprawidłowy adres URL logo." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Motyw nie jest dostępny: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Zmień logo" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Logo strony" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Zmień motyw" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Motyw strony" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Motyw strony." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Zmień obraz tła" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Tło" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "Można wysłać obraz tła dla strony. Maksymalny rozmiar pliku to %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Włączone" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Wyłączone" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Włącz lub wyłącz obraz tła." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Kafelkowy obraz tła" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Zmień kolory" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Zawartość" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Panel boczny" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Odnośniki" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Użycie domyślnych" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Przywróć domyślny wygląd" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Przywróć domyślne ustawienia" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -931,7 +936,7 @@ msgstr "Przywróć domyślne ustawienia" msgid "Save" msgstr "Zapisz" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Zapisz wygląd" @@ -1368,18 +1373,18 @@ msgid "" "palette of your choice." msgstr "Dostosuj wygląd grupy za pomocą wybranego obrazu tła i palety kolorów." -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Nie można zaktualizować wyglądu." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings!" msgstr "Nie można zapisać ustawień wyglądu." -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Zapisano preferencje wyglądu." @@ -1703,7 +1708,7 @@ msgstr "Osobista wiadomość" msgid "Optionally add a personal message to the invitation." msgstr "Opcjonalnie dodaj osobistą wiadomość do zaproszenia." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Wyślij" @@ -2029,8 +2034,8 @@ msgstr "typ zawartości " msgid "Only " msgstr "Tylko " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "To nie jest obsługiwany format danych." @@ -4581,11 +4586,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Można wysłać osobisty obraz tła. Maksymalny rozmiar pliku to 2 MB." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Błędne domyślne ustawienia koloru: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Przywrócono domyślny wygląd." @@ -5123,7 +5124,7 @@ msgstr "Wyślij bezpośredni wpis" msgid "To" msgstr "Do" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Dostępne znaki" @@ -5136,11 +5137,11 @@ msgstr "Wyślij wpis" msgid "What's up, %s?" msgstr "Co słychać, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Załącz" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Załącz plik" @@ -5407,7 +5408,12 @@ msgstr "Nie można subskrybować innych do ciebie." msgid "Not subscribed!" msgstr "Niesubskrybowane." -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Nie można usunąć subskrypcji." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Nie można usunąć subskrypcji." diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index c5b3c9515c..01d8c5f63c 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:35+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:54:59+0000\n" "Language-Team: Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt\n" "X-Message-Group: out-statusnet\n" @@ -96,8 +96,8 @@ msgid "" "You can try to [nudge %s](../%s) from his profile or [post something to his " "or her attention](%%%%action.newnotice%%%%?status_textarea=%s)." msgstr "" -"Tente [acotovelar o(a) %s](../%s) a partir do perfil ou [publicar qualquer " -"coisa à sua atenção](%%%%action.newnotice%%%%?status_textarea=%s)." +"Tente [acotovelar %s](../%s) a partir do perfil ou [publicar qualquer coisa " +"à sua atenção](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202 #, php-format @@ -105,8 +105,8 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " "post a notice to his or her attention." msgstr "" -"Podia [registar uma conta](%%%%action.register%%%%) e depois acotovelar o(a) " -"%s ou publicar uma nota à sua atenção." +"Podia [registar uma conta](%%%%action.register%%%%) e depois acotovelar %s " +"ou publicar uma nota à sua atenção." #: actions/all.php:165 msgid "You and friends" @@ -115,7 +115,7 @@ msgstr "Você e amigos" #: actions/allrss.php:119 actions/apitimelinefriends.php:121 #, php-format msgid "Updates from %1$s and friends on %2$s!" -msgstr "Actualizações do(a) %1$s e amigos no %2$s!" +msgstr "Actualizações de %1$s e amigos no %2$s!" #: actions/apiaccountratelimitstatus.php:70 #: actions/apiaccountupdatedeliverydevice.php:93 @@ -187,7 +187,12 @@ msgstr "Utilizador não tem perfil." msgid "Could not save profile." msgstr "Não foi possível gravar o perfil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Não pode deixar de seguir-se a si próprio!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Bloqueio do utilizador falhou." @@ -216,7 +221,7 @@ msgstr "" #: actions/apidirectmessage.php:89 #, php-format msgid "Direct messages from %s" -msgstr "Mensagens directas do(a) %s" +msgstr "Mensagens directas de %s" #: actions/apidirectmessage.php:93 #, php-format @@ -396,7 +401,7 @@ msgstr "Não foi possível remover %s do grupo %s." #: actions/apigrouplistall.php:90 actions/usergroups.php:62 #, php-format msgid "%s groups" -msgstr "Grupos do(a) %s" +msgstr "Grupos de %s" #: actions/apigrouplistall.php:94 #, php-format @@ -549,7 +554,7 @@ msgstr "Original" #: actions/avatarsettings.php:141 actions/avatarsettings.php:214 #: actions/grouplogo.php:210 actions/grouplogo.php:271 msgid "Preview" -msgstr "Antever" +msgstr "Antevisão" #: actions/avatarsettings.php:148 lib/deleteuserform.php:66 #: lib/noticelist.php:550 @@ -822,45 +827,45 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Configurações do design deste site StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "URL do logótipo inválida." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Tema não está disponível: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Alterar logótipo" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Logótipo do site" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Alterar tema" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Tema do site" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "O tema para o site." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Alterar imagem de fundo" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" -msgstr "Imagem de fundo" +msgstr "Fundo" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -869,55 +874,55 @@ msgstr "" "Pode carregar uma imagem de fundo para o site. O tamanho máximo do ficheiro " "é %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" -msgstr "" +msgstr "Ligar" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" -msgstr "" +msgstr "Desligar" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "Ligar ou desligar a imagem de fundo." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Repetir imagem de fundo em mosaico" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Alterar cores" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Conteúdo" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" -msgstr "Barra lateral" +msgstr "Lateral" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Ligações" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usar predefinições" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Repor designs predefinidos" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Repor predefinição" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -927,7 +932,7 @@ msgstr "Repor predefinição" msgid "Save" msgstr "Gravar" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Gravar o design" @@ -1201,7 +1206,7 @@ msgstr "" #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "Notas favoritas do(a) %s" +msgstr "Notas favoritas de %s" #: actions/favoritesrss.php:115 #, php-format @@ -1369,18 +1374,18 @@ msgstr "" "Personalize o aspecto do seu grupo com uma imagem de fundo e uma paleta de " "cores à sua escolha." -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Não foi possível actualizar o design." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings!" msgstr "Não foi possível actualizar as suas configurações do design!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Preferências do design foram gravadas." @@ -1453,8 +1458,8 @@ msgid "" "Search for groups on %%site.name%% by their name, location, or description. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"Procure grupos em %%site.name%% pelo seu nome, localização ou descrição. " -"Separe os termos de busca com espaços; precisam de ter 3 ou mais caracteres." +"Procure grupos neste site pesquisando o nome, localização ou descrição. Os " +"termos de busca devem ter 3 ou mais caracteres e ser separados por espaços." #: actions/groupsearch.php:58 msgid "Group search" @@ -1631,7 +1636,8 @@ msgstr "Caixa de entrada de %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." msgstr "" -"Esta é a sua caixa de entrada, que apresenta as mensagens privadas recebidas." +"Esta é a sua caixa de entrada, que apresenta as mensagens privadas que " +"recebeu." #: actions/invite.php:39 msgid "Invites have been disabled." @@ -1704,9 +1710,9 @@ msgstr "Mensagem pessoal" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "Pode optar por acrescentar uma mensagem pessoal ao convite." +msgstr "Pode optar por acrescentar uma mensagem pessoal ao convite" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Enviar" @@ -1958,8 +1964,8 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"Procure notas em %%site.name%% pelo seu conteúdo. Separe os termos de busca " -"com espaços; precisam de ter 3 ou mais caracteres." +"Procure notas neste site pesquisando o seu conteúdo. Os termos de busca " +"devem ter 3 ou mais caracteres e ser separados por espaços." #: actions/noticesearch.php:78 msgid "Text search" @@ -2028,10 +2034,10 @@ msgstr "tipo de conteúdo " #: actions/oembed.php:160 msgid "Only " -msgstr "" +msgstr "Apenas " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Formato de dados não suportado." @@ -2061,15 +2067,15 @@ msgstr "Compactar URLs com" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "Serviço de compactação automático a utilizar." +msgstr "Serviço de compactação automática que será usado" #: actions/othersettings.php:122 msgid "View profile designs" -msgstr "Ver designs de perfis" +msgstr "Ver o design dos perfis" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "Mostrar ou esconder designs de perfis" +msgstr "Mostrar ou esconder o design dos perfis" #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2088,7 +2094,7 @@ msgstr "Caixa de saída de %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." msgstr "" -"Esta é a sua caixa de saída, que apresenta as mensagens privadas enviadas." +"Esta é a sua caixa de saída, que apresenta as mensagens privadas que enviou." #: actions/passwordsettings.php:58 msgid "Change password" @@ -2258,8 +2264,8 @@ msgid "" "Search for people on %%site.name%% by their name, location, or interests. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"Procure pessoas em %%site.name%% pelo seu nome, localidade ou interesses. " -"Separe os termos de busca com espaços; precisam de ter 3 ou mais caracteres." +"Procure pessoas neste site pesquisando o nome, localidade ou interesses. Os " +"termos de busca devem ter 3 ou mais caracteres e ser separados por espaços." #: actions/peoplesearch.php:58 msgid "People search" @@ -2316,7 +2322,8 @@ msgstr "Página de acolhimento" #: actions/profilesettings.php:117 actions/register.php:454 msgid "URL of your homepage, blog, or profile on another site" -msgstr "URL da uma página sua, blogue ou perfil noutro sítio na internet" +msgstr "" +"URL da sua página de acolhimento, blogue ou perfil noutro site na internet" #: actions/profilesettings.php:122 actions/register.php:460 #, php-format @@ -2708,7 +2715,7 @@ msgstr "Repita a palavra-chave acima. Obrigatório." #: actions/register.php:437 actions/register.php:441 #: actions/siteadminpanel.php:283 lib/accountsettingsaction.php:120 msgid "Email" -msgstr "Correio electrónico" +msgstr "Correio" #: actions/register.php:438 actions/register.php:442 msgid "Used only for updates, announcements, and password recovery" @@ -2753,7 +2760,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Parabéns, %s! Bem-vindo(a) ao %%%%site.name%%%%. A partir daqui, pode...\n" +"Parabéns, %s! Bem-vindo(a) ao site %%%%site.name%%%%. A partir daqui, " +"pode...\n" "\n" "* Visitar o [seu perfil](%s) e enviar a primeira mensagem.\n" "* Adicionar um [endereço Jabber/GTalk](%%%%action.imsettings%%%%) de forma a " @@ -2821,11 +2829,10 @@ msgid "Invalid profile URL (bad format)" msgstr "URL 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 "" -"URL de perfil não é válida (nenhum documento Yadis ou nenhum XRDS inválido " -"definidos)." +"URL do perfil não é válida (não há um documento Yadis, ou foi definido um " +"XRDS inválido)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -3041,7 +3048,7 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** é um grupo de utilizadores em %%%%site.name%%%%, um serviço de " +"**%s** é um grupo de utilizadores no site %%%%site.name%%%%, um serviço de " "[microblogues](http://en.wikipedia.org/wiki/Micro-blogging) baseado na " "aplicação de Software Livre [StatusNet](http://status.net/). Os membros " "deste grupo partilham mensagens curtas acerca das suas vidas e interesses. " @@ -3056,7 +3063,7 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" -"**%s** é um grupo de utilizadores em %%%%site.name%%%%, um serviço de " +"**%s** é um grupo de utilizadores no site %%%%site.name%%%%, um serviço de " "[microblogues](http://en.wikipedia.org/wiki/Micro-blogging) baseado na " "aplicação de Software Livre [StatusNet](http://status.net/). Os membros " "deste grupo partilham mensagens curtas acerca das suas vidas e interesses. " @@ -3152,7 +3159,7 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** tem uma conta em %%%%site.name%%%%, um serviço de [microblogues]" +"**%s** tem uma conta no site %%%%site.name%%%%, um serviço de [microblogues]" "(http://en.wikipedia.org/wiki/Micro-blogging) baseado na aplicação de " "Software Livre [StatusNet](http://status.net/). [Registe-se agora](%%%%" "action.register%%%%) para seguir as notas de **%s** e de muitos mais! " @@ -3165,7 +3172,7 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** tem uma conta em %%%%site.name%%%%, um serviço de [microblogues]" +"**%s** tem uma conta no site %%%%site.name%%%%, um serviço de [microblogues]" "(http://en.wikipedia.org/wiki/Micro-blogging) baseado na aplicação de " "Software Livre [StatusNet](http://status.net/). " @@ -3914,7 +3921,7 @@ msgstr "Tipo de imagem incorrecto para o avatar da URL ‘%s’." #: actions/userbyid.php:70 msgid "No id." -msgstr "" +msgstr "Nenhuma identificação." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" @@ -4141,7 +4148,7 @@ msgstr "Ajudem-me!" #: lib/action.php:464 lib/searchaction.php:127 msgid "Search" -msgstr "Pesquisar" +msgstr "Pesquisa" #: lib/action.php:464 msgid "Search for people or text" @@ -4181,7 +4188,7 @@ msgstr "Privacidade" #: lib/action.php:737 msgid "Source" -msgstr "Fonte" +msgstr "Código" #: lib/action.php:739 msgid "Contact" @@ -4201,8 +4208,8 @@ 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%%)." +"**%%site.name%%** é um serviço de microblogues disponibilizado por [%%site." +"broughtby%%](%%site.broughtbyurl%%). " #: lib/action.php:774 #, php-format @@ -4226,7 +4233,7 @@ msgstr "Licença de conteúdos do site" #: lib/action.php:799 msgid "All " -msgstr "" +msgstr "Tudo " #: lib/action.php:804 msgid "license." @@ -4404,7 +4411,7 @@ msgstr "Introduza o nome do utilizador para subscrever" #: lib/command.php:502 #, php-format msgid "Subscribed to %s" -msgstr "Subscreveu o(a) %s" +msgstr "Subscreveu %s" #: lib/command.php:523 msgid "Specify the name of the user to unsubscribe from" @@ -4413,7 +4420,7 @@ msgstr "Introduza o nome do utilizador para deixar de subscrever" #: lib/command.php:530 #, php-format msgid "Unsubscribed from %s" -msgstr "Deixou de subscrever o(a) %s" +msgstr "Deixou de subscrever %s" #: lib/command.php:548 lib/command.php:571 msgid "Command not yet implemented." @@ -4466,7 +4473,6 @@ msgstr[0] "Está no grupo:" msgstr[1] "Está nos grupos:" #: lib/command.php:652 -#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4520,7 +4526,6 @@ msgstr "" "reply # - responder à nota com esta identificação\n" "reply - responder à última nota do utilizador\n" "join - juntar-se ao grupo\n" -"login - Receber uma ligação para iniciar sessão na interface web\n" "drop - afastar-se do grupo\n" "stats - receber as suas estatísticas\n" "stop - o mesmo que 'off'\n" @@ -4582,11 +4587,7 @@ msgstr "" "Pode carregar uma imagem de fundo pessoal. O tamanho máximo do ficheiro é " "2MB." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Configurações inadequadas das cores por omissão: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Predefinições do design repostas" @@ -5124,7 +5125,7 @@ msgstr "Enviar uma nota directa" msgid "To" msgstr "Para" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Caracteres disponíveis" @@ -5137,11 +5138,11 @@ msgstr "Enviar uma nota" msgid "What's up, %s?" msgstr "Novidades, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Anexar" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Anexar um ficheiro" @@ -5408,7 +5409,12 @@ msgstr "Não foi possível que outro o subscrevesse." msgid "Not subscribed!" msgstr "Não subscrito!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Não foi possível apagar a subscrição." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Não foi possível apagar a subscrição." diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index 31068710e5..71e51e35b0 100644 --- a/locale/pt_BR/LC_MESSAGES/statusnet.po +++ b/locale/pt_BR/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:38+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:02+0000\n" "Language-Team: Brazilian Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt-br\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "O usuário não tem perfil." msgid "Could not save profile." msgstr "Não foi possível salvar o perfil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Não foi possível atualizar o usuário." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Não foi possível bloquear o usuário." @@ -254,16 +259,14 @@ msgid "No status found with that ID." msgstr "Não foi encontrado nenhum status com esse ID." #: actions/apifavoritecreate.php:119 -#, fuzzy msgid "This status is already a favorite!" -msgstr "Essa mensagem já é uma favorita!" +msgstr "Esta mensagem já é favorita!" #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176 msgid "Could not create favorite." msgstr "Não foi possível criar a favorita." #: actions/apifavoritedestroy.php:122 -#, fuzzy msgid "That status is not a favorite!" msgstr "Essa mensagem não é uma favorita!" @@ -833,51 +836,51 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Tamanho inválido." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Esta página não está disponível em um " -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Altere a sua senha" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Convidar" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Alterar" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Nova mensagem" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "Sair deste site" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Alterar imagem de plano de fundo." -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -886,58 +889,58 @@ msgstr "" "Você pode enviar uma imagem de plano de fundo para o site. O tamanho máximo " "do arquivo é %l$s" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Ligado" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Altere a sua senha" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Conteúdo" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Procurar" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Lista" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usar o padrão." -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -947,7 +950,7 @@ msgstr "" msgid "Save" msgstr "Salvar" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1395,20 +1398,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "Não foi possível atualizar o usuário." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Não foi possível salvar suas configurações do Twitter!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "As preferências de sincronização foram salvas." @@ -1734,7 +1737,7 @@ msgstr "Mensagem pessoal" msgid "Optionally add a personal message to the invitation." msgstr "Você pode, opcionalmente, adicionar uma mensagem pessoal ao convite." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Enviar" @@ -2069,8 +2072,8 @@ msgstr "" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Formato de dados não suportado." @@ -4611,11 +4614,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Você pode enviar seu avatar pessoal. O tamanho máximo do arquivo é %s" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5080,7 +5079,7 @@ msgstr "Enviar uma mensagem direta" msgid "To" msgstr "Para" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Caracteres disponíveis" @@ -5093,11 +5092,11 @@ msgstr "Enviar uma mensagem" msgid "What's up, %s?" msgstr "E aí, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5378,7 +5377,12 @@ msgstr "Não foi possível fazer com que o outros o sigam." msgid "Not subscribed!" msgstr "Não é seguido!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Não foi possível excluir a assinatura." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Não foi possível excluir a assinatura." diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index 25e8d8e7cb..9fe47e65d4 100644 --- a/locale/ru/LC_MESSAGES/statusnet.po +++ b/locale/ru/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:42+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:05+0000\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ru\n" "X-Message-Group: out-statusnet\n" @@ -190,7 +190,12 @@ msgstr "У пользователя нет профиля." msgid "Could not save profile." msgstr "Не удаётся сохранить профиль." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Вы не можете перестать следовать за собой!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Неудача при блокировке пользователя." @@ -829,45 +834,45 @@ msgstr "Оформление" msgid "Design settings for this StatusNet site." msgstr "Настройки оформления для этого сайта StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "Неверный URL логотипа." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Тема не доступна: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Изменить логотип" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Логотип сайта" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Изменить тему" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Тема сайта" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Тема для сайта." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Изменение фонового изображения" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -876,55 +881,55 @@ msgstr "" "Вы можете загрузить фоновое изображение для сайта. Максимальный размер файла " "составляет %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Включить" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Отключить" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Включить или отключить показ фонового изображения." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Растянуть фоновое изображение" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Изменение цветовой гаммы" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Содержание" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Боковая панель" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Текст" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Ссылки" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "Использовать значения по умолчанию" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Восстановить оформление по умолчанию" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Восстановить значения по умолчанию" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -934,7 +939,7 @@ msgstr "Восстановить значения по умолчанию" msgid "Save" msgstr "Сохранить" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Сохранить оформление" @@ -1381,18 +1386,18 @@ msgstr "" "Настройте внешний вид группы, установив фоновое изображение и цветовую гамму " "на ваш выбор." -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Не удаётся обновить ваше оформление." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Настройки оформления сохранены." @@ -1719,7 +1724,7 @@ msgstr "Личное сообщение" msgid "Optionally add a personal message to the invitation." msgstr "Можно добавить к приглашению личное сообщение." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "ОК" @@ -2043,8 +2048,8 @@ msgstr "тип содержимого " msgid "Only " msgstr "Только " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Неподдерживаемый формат данных." @@ -2830,11 +2835,8 @@ 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-документ либо не указан или указан неверный " -"XRDS)." +msgstr "Неправильный URL-профиль (нет YADIS-документа, либо неверный XRDS)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -4484,7 +4486,6 @@ msgstr[1] "Вы являетесь участником следующих гр msgstr[2] "Вы являетесь участником следующих групп:" #: lib/command.php:652 -#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4538,7 +4539,6 @@ msgstr "" "reply # — ответить на запись с заданным id\n" "reply — ответить на последнюю запись пользователя\n" "join — присоединиться к группе\n" -"login — получить ссылку на вход в веб-интерфейс\n" "drop — покинуть группу\n" "stats — получить свою статистику\n" "stop — то же, что и 'off'\n" @@ -4600,11 +4600,7 @@ msgstr "" "Вы можете загрузить собственное фоновое изображение. Максимальный размер " "файла составляет 2МБ." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Плохие настройки цвета по умолчанию: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Оформление по умолчанию восстановлено." @@ -5141,7 +5137,7 @@ msgstr "Послать прямую запись" msgid "To" msgstr "Для" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "6 или больше знаков" @@ -5154,11 +5150,11 @@ msgstr "Послать запись" msgid "What's up, %s?" msgstr "Что нового, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Прикрепить" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Прикрепить файл" @@ -5425,7 +5421,12 @@ msgstr "Не удаётся подписать других на вашу лен msgid "Not subscribed!" msgstr "Не подписаны!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Не удаётся удалить подписку." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Не удаётся удалить подписку." diff --git a/locale/statusnet.po b/locale/statusnet.po index 0ab702ae5a..ea65870d57 100644 --- a/locale/statusnet.po +++ b/locale/statusnet.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -176,7 +176,11 @@ msgstr "" msgid "Could not save profile." msgstr "" -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +msgid "You cannot block yourself!" +msgstr "" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -800,100 +804,100 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -903,7 +907,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1325,18 +1329,18 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" @@ -1632,7 +1636,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "" @@ -1917,8 +1921,8 @@ msgstr "" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4285,11 +4289,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4733,7 +4733,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "" @@ -4746,11 +4746,11 @@ msgstr "" msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5017,7 +5017,11 @@ msgstr "" msgid "Not subscribed!" msgstr "" -#: lib/subs.php:140 +#: lib/subs.php:133 +msgid "Couldn't delete self-subscription." +msgstr "" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "" diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index 8421ccdb03..a059ce87b5 100644 --- a/locale/sv/LC_MESSAGES/statusnet.po +++ b/locale/sv/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Swedish # +# Author@translatewiki.net: Jamminjohn # Author@translatewiki.net: McDutchie # -- # This file is distributed under the same license as the StatusNet package. @@ -8,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:46+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:08+0000\n" "Language-Team: Swedish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: sv\n" "X-Message-Group: out-statusnet\n" @@ -21,9 +22,8 @@ msgstr "" #: actions/all.php:63 actions/public.php:97 actions/replies.php:92 #: actions/showfavorites.php:137 actions/tag.php:51 -#, fuzzy msgid "No such page" -msgstr "Inget sådant meddelande." +msgstr "Ingen sådan sida" #: actions/all.php:74 actions/allrss.php:68 #: actions/apiaccountupdatedeliverydevice.php:113 @@ -48,39 +48,39 @@ msgstr "Inget sådant meddelande." #: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77 #: lib/subs.php:34 lib/subs.php:116 msgid "No such user." -msgstr "Ingen sådan användare" +msgstr "Ingen sådan användare." #: actions/all.php:84 -#, fuzzy, php-format +#, php-format msgid "%s and friends, page %d" -msgstr "%s med vänner" +msgstr "%s och vänner, sida %d" #: actions/all.php:86 actions/all.php:167 actions/allrss.php:115 #: actions/apitimelinefriends.php:114 lib/personalgroupnav.php:100 #, php-format msgid "%s and friends" -msgstr "%s med vänner" +msgstr "%s och vänner" #: actions/all.php:99 -#, fuzzy, php-format +#, php-format msgid "Feed for friends of %s (RSS 1.0)" -msgstr "Flöden för $s vänner" +msgstr "Flöden för %ss vänner (RSS 1.0)" #: actions/all.php:107 -#, fuzzy, php-format +#, php-format msgid "Feed for friends of %s (RSS 2.0)" -msgstr "Flöden för $s vänner" +msgstr "Flöden för %ss vänner (RSS 2.0)" #: actions/all.php:115 -#, fuzzy, php-format +#, php-format msgid "Feed for friends of %s (Atom)" -msgstr "Flöden för $s vänner" +msgstr "Flöden för %ss vänner (Atom)" #: actions/all.php:127 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." -msgstr "" +msgstr "Detta är tidslinjen för %s och vänner men ingen har postat något än." #: actions/all.php:132 #, php-format @@ -88,6 +88,8 @@ msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " "something yourself." msgstr "" +"Prova att prenumerera på fler personer, [gå med i en grupp](%%action.groups%" +"%) eller posta något själv." #: actions/all.php:134 #, php-format @@ -95,6 +97,9 @@ msgid "" "You can try to [nudge %s](../%s) from his profile or [post something to his " "or her attention](%%%%action.newnotice%%%%?status_textarea=%s)." msgstr "" +"Du kan prova att [knuffa %s](../%s) från dennes profil eller [posta " +"någonting för hans eller hennes uppmärksamhet](%%%%action.newnotice%%%%?" +"status_textarea=%s)." #: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202 #, php-format @@ -102,11 +107,12 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and then nudge %s or " "post a notice to his or her attention." msgstr "" +"Varför inte [registrera ett konto](%%%%action.register%%%%) och sedan knuffa " +"%s eller posta en notis för hans eller hennes uppmärksamhet." #: actions/all.php:165 -#, fuzzy msgid "You and friends" -msgstr "%s med vänner" +msgstr "Du och vänner" #: actions/allrss.php:119 actions/apitimelinefriends.php:121 #, php-format @@ -118,9 +124,8 @@ msgstr "Uppdateringar från %1$s och vänner på %2$s!" #: actions/apiaccountupdateprofilebackgroundimage.php:94 #: actions/apiaccountupdateprofilecolors.php:118 #: actions/apiaccountupdateprofile.php:97 -#, fuzzy msgid "API method not found." -msgstr "API-metoden hittades inte!" +msgstr "API-metoden hittades inte" #: actions/apiaccountupdatedeliverydevice.php:85 #: actions/apiaccountupdateprofilebackgroundimage.php:86 @@ -139,10 +144,9 @@ msgstr "Denna metod kräver en POST." msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none" -msgstr "" +msgstr "Du måste ange ett värdet på parametern 'device': sms, im, none" #: actions/apiaccountupdatedeliverydevice.php:132 -#, fuzzy msgid "Could not update user." msgstr "Kunde inte uppdatera användare." @@ -156,20 +160,20 @@ msgid "" "The server was unable to handle that much POST data (%s bytes) due to its " "current configuration." msgstr "" +"Servern kunde inte hantera så mycket POST-data (%s byte) på grund av sin " +"nuvarande konfiguration." #: actions/apiaccountupdateprofilebackgroundimage.php:136 #: actions/apiaccountupdateprofilebackgroundimage.php:146 #: actions/apiaccountupdateprofilecolors.php:164 #: actions/apiaccountupdateprofilecolors.php:174 -#, fuzzy msgid "Unable to save your design settings." -msgstr "Kunde inte spara dina Twitter inställningar!" +msgstr "Kunde inte spara dina utseendeinställningar." #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy msgid "Could not update your design." -msgstr "Kunde inte uppdatera användare." +msgstr "Kunde inte uppdatera din profils utseende." #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -181,45 +185,48 @@ msgid "User has no profile." msgstr "Användaren har ingen profil." #: actions/apiaccountupdateprofile.php:147 -#, fuzzy msgid "Could not save profile." msgstr "Kunde inte spara profil." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Du kan inte sluta följa dig själv!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." -msgstr "" +msgstr "Blockering av användare misslyckades." #: actions/apiblockdestroy.php:107 msgid "Unblock user failed." -msgstr "" +msgstr "Hävning av blockering av användare misslyckades." #: actions/apidirectmessagenew.php:126 msgid "No message text!" -msgstr "Ingen meddelande text!" +msgstr "Ingen meddelandetext!" #: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "Det är för långt. Max är 140 tecken. " +msgstr "Detta är för långt. Maximal meddelandestorlek är %d tecken." #: actions/apidirectmessagenew.php:146 msgid "Recipient user not found." -msgstr "Mottagaren kunde inte hittas." +msgstr "Mottagare hittades inte." #: actions/apidirectmessagenew.php:150 msgid "Can't send direct messages to users who aren't your friend." -msgstr "" -"Kan inte skicka direktmeddelanden till användare som inte är dina vänner." +msgstr "Kan inte skicka direktmeddelanden till användare som inte är din vän." #: actions/apidirectmessage.php:89 -#, fuzzy, php-format +#, php-format msgid "Direct messages from %s" -msgstr "Direktmeddelande till %s" +msgstr "Direktmeddelande från %s" #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" -msgstr "Alla direktmeddelanden skickade ifrån %s" +msgstr "Alla direktmeddelanden skickade från %s" #: actions/apidirectmessage.php:101 #, php-format @@ -251,57 +258,52 @@ msgstr "API-metoden hittades inte!" #: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 #: actions/apistatusesdestroy.php:113 msgid "No status found with that ID." -msgstr "Ingen status hittad med det ID" +msgstr "Ingen status hittad med det ID:t." #: actions/apifavoritecreate.php:119 -#, fuzzy msgid "This status is already a favorite!" -msgstr "Detta inlägg är redan en favorit!" +msgstr "Denna status är redan en favorit!" #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176 msgid "Could not create favorite." msgstr "Kunde inte skapa favorit." #: actions/apifavoritedestroy.php:122 -#, fuzzy msgid "That status is not a favorite!" -msgstr "Det inlägget är ingen favorit!" +msgstr "Denna status är inte en favorit!" #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 msgid "Could not delete favorite." -msgstr "Kunde inte tabort favoriten." +msgstr "Kunde inte ta bort favoriten." #: actions/apifriendshipscreate.php:109 msgid "Could not follow user: User not found." -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte följa användare: användare hittades inte." #: actions/apifriendshipscreate.php:118 #, php-format msgid "Could not follow user: %s is already on your list." -msgstr "Kunde inte följa användaren: %s finns redan i din lista." +msgstr "Kunde inte följa användare: %s finns redan i din lista." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte sluta följa användaren: användaren hittades inte." #: actions/apifriendshipsdestroy.php:120 msgid "You cannot unfollow yourself!" -msgstr "" +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ändarid eller namn måste läggas till." +msgstr "Två användar-ID:n eller screen_names måste tillhandahållas." #: actions/apifriendshipsshow.php:135 -#, fuzzy msgid "Could not determine source user." -msgstr "Kunde inte ta emot favoritinläggen." +msgstr "" #: actions/apifriendshipsshow.php:143 -#, fuzzy msgid "Could not find target user." -msgstr "Kunde inte få fram status." +msgstr "" #: actions/apigroupcreate.php:164 actions/editgroup.php:182 #: actions/newgroup.php:126 actions/profilesettings.php:208 @@ -314,133 +316,129 @@ msgstr "" #: actions/newgroup.php:130 actions/profilesettings.php:231 #: actions/register.php:208 msgid "Nickname already in use. Try another one." -msgstr "Användarnamnet används redan, försök med ett annat." +msgstr "Smeknamnet används redan. Försök med ett annat." #: actions/apigroupcreate.php:180 actions/editgroup.php:189 #: actions/newgroup.php:133 actions/profilesettings.php:211 #: actions/register.php:210 msgid "Not a valid nickname." -msgstr "Det är inget giltigt användarnamn." +msgstr "Inte ett giltigt smeknamn." #: actions/apigroupcreate.php:196 actions/editgroup.php:195 #: actions/newgroup.php:139 actions/profilesettings.php:215 #: actions/register.php:217 msgid "Homepage is not a valid URL." -msgstr "Hemsidan har ingen giltig URL" +msgstr "Hemsida är inte en giltig URL." #: actions/apigroupcreate.php:205 actions/editgroup.php:198 #: actions/newgroup.php:142 actions/profilesettings.php:218 #: actions/register.php:220 msgid "Full name is too long (max 255 chars)." -msgstr "Ditt namn är för långt (max 255 tecken)." +msgstr "Fullständigt namn är för långt (max 255 tecken)." #: actions/apigroupcreate.php:213 -#, fuzzy, php-format +#, php-format msgid "Description is too long (max %d chars)." -msgstr "Biografin är för lång (max 140 tecken)" +msgstr "Beskrivning är för lång (max 140 tecken)" #: actions/apigroupcreate.php:224 actions/editgroup.php:204 #: actions/newgroup.php:148 actions/profilesettings.php:225 #: actions/register.php:227 msgid "Location is too long (max 255 chars)." -msgstr "Platse är för lång (max 255 tecken)." +msgstr "Beskrivning av plats är för lång (max 255 tecken)." #: actions/apigroupcreate.php:243 actions/editgroup.php:215 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." -msgstr "" +msgstr "För många alias! Maximum %d." #: actions/apigroupcreate.php:264 actions/editgroup.php:224 #: actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "Ogiltig hemsideadress '%s'" +msgstr "Ogiltigt alias: \"%s\"" #: actions/apigroupcreate.php:273 actions/editgroup.php:228 #: actions/newgroup.php:172 -#, fuzzy, php-format +#, php-format msgid "Alias \"%s\" already in use. Try another one." -msgstr "Användarnamnet används redan, försök med ett annat." +msgstr "Alias \"%s\" används redan. Försök med ett annat." #: actions/apigroupcreate.php:286 actions/editgroup.php:234 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." -msgstr "" +msgstr "Alias kan inte vara samma som smeknamn." #: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 #: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 #: actions/apigroupshow.php:90 actions/apitimelinegroup.php:91 -#, fuzzy msgid "Group not found!" -msgstr "API-metoden hittades inte!" +msgstr "Grupp hittades inte!" #: actions/apigroupjoin.php:110 -#, fuzzy msgid "You are already a member of that group." -msgstr "Du prenumererar redan på dessa användare:" +msgstr "Du är redan en medlem i denna grupp." #: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221 msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "Du har blivit blockerad från denna grupp av administratören. " #: actions/apigroupjoin.php:138 -#, fuzzy, php-format +#, php-format msgid "Could not join user %s to group %s." -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte ansluta användare % till grupp %s." #: actions/apigroupleave.php:114 -#, fuzzy msgid "You are not a member of this group." -msgstr "Du skickade inte oss den profilen" +msgstr "Du är inte en medlem i denna grupp." #: actions/apigroupleave.php:124 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %s to group %s." -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte ta bort användare %s från grupp %s." #: actions/apigrouplistall.php:90 actions/usergroups.php:62 #, php-format msgid "%s groups" -msgstr "" +msgstr "%s grupper" #: actions/apigrouplistall.php:94 -#, fuzzy, php-format +#, php-format msgid "groups on %s" -msgstr "Sök personer på denna sida" +msgstr "grupper på %s" #: actions/apigrouplist.php:95 -#, fuzzy, php-format +#, php-format msgid "%s's groups" -msgstr "%s / Favoriter från %s" +msgstr "%ss grupper" #: actions/apigrouplist.php:103 -#, fuzzy, php-format +#, php-format msgid "Groups %s is a member of on %s." -msgstr "Du skickade inte oss den profilen" +msgstr "Grupper %s är en medlem i på %s." #: actions/apistatusesdestroy.php:107 msgid "This method requires a POST or DELETE." -msgstr "Denna metod kräver antingen skicka eller tabort." +msgstr "Denna metod kräver en POST eller en DELETE." #: actions/apistatusesdestroy.php:130 msgid "You may not delete another user's status." -msgstr "Du kan inte tabort nån annan användares status." +msgstr "Du kan inte ta bort en annan användares status." #: actions/apistatusesshow.php:138 -#, fuzzy msgid "Status deleted." -msgstr "Användarbilden uppdaterad." +msgstr "Status borttagen." #: actions/apistatusesshow.php:144 msgid "No status with that ID found." -msgstr "Ingen status med det ID hittades." +msgstr "Ingen status med det ID:t hittades." #: actions/apistatusesupdate.php:157 actions/newnotice.php:155 #: scripts/maildaemon.php:71 -#, fuzzy, php-format +#, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "För långt. Maximalt 140 tecken" +msgstr "Det är för långt. Maximal notisstorlek är %d tecken." #: actions/apistatusesupdate.php:198 msgid "Not found" @@ -449,12 +447,11 @@ msgstr "Hittades inte" #: actions/apistatusesupdate.php:227 actions/newnotice.php:183 #, php-format msgid "Max notice size is %d chars, including attachment URL." -msgstr "" +msgstr "Maximal notisstorlek är %d tecken, inklusive bilage-URL." #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy msgid "Unsupported format." -msgstr "Bildfilens format stödjs inte." +msgstr "Format som inte stödjs." #: actions/apitimelinefavorites.php:107 #, php-format @@ -464,7 +461,7 @@ msgstr "%s / Favoriter från %s" #: actions/apitimelinefavorites.php:119 #, php-format msgid "%s updates favorited by %s / %s." -msgstr "%s uppdaterade favoriter av %s / %s." +msgstr "%s uppdateringar markerade som favorit av %s / %s." #: actions/apitimelinegroup.php:108 actions/apitimelineuser.php:117 #: actions/grouprss.php:131 actions/userrss.php:90 @@ -479,14 +476,14 @@ msgid "Updates from %1$s on %2$s!" msgstr "Uppdateringar från %1$s på %2$s!" #: actions/apitimelinementions.php:116 -#, fuzzy, php-format +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Uppdateringar med svar till %2$s" +msgstr "%1$s / Uppdateringar som nämner %2$s" #: actions/apitimelinementions.php:126 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." -msgstr "%1$s uppdateringar med svar till uppdatering från %2$s / %3$s." +msgstr "%1$s uppdateringar med svar på uppdatering från %2$s / %3$s." #: actions/apitimelinepublic.php:106 actions/publicrss.php:103 #, php-format @@ -496,49 +493,48 @@ msgstr "%s publika tidslinje" #: actions/apitimelinepublic.php:110 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "%s uppdateringar ifrån allihop!" +msgstr "%s uppdateringar från alla!" #: actions/apitimelinetag.php:101 actions/tag.php:66 #, php-format msgid "Notices tagged with %s" -msgstr "Inlägg taggade med %s" +msgstr "Notiser taggade med %s" #: actions/apitimelinetag.php:107 actions/tagrss.php:64 -#, fuzzy, php-format +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "Uppdateringar från %1$s på %2$s!" +msgstr "Uppdateringar taggade med %1$s på %2$s!" #: actions/apiusershow.php:96 -#, fuzzy msgid "Not found." -msgstr "Hittades inte" +msgstr "Hittades inte." #: actions/attachment.php:73 -#, fuzzy msgid "No such attachment." -msgstr "Inget sådant dokument." +msgstr "Ingen sådan bilaga." #: actions/avatarbynickname.php:59 actions/leavegroup.php:76 msgid "No nickname." -msgstr "Inget användarnamn" +msgstr "Inget smeknamn." #: actions/avatarbynickname.php:64 msgid "No size." -msgstr "Ingen storlek" +msgstr "Ingen storlek." #: actions/avatarbynickname.php:69 msgid "Invalid size." -msgstr "Felaktig storlek" +msgstr "Ogiltig storlek." #: actions/avatarsettings.php:67 actions/showgroup.php:221 #: lib/accountsettingsaction.php:112 msgid "Avatar" -msgstr "Användarbild" +msgstr "Avatar" #: 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 uppdatera din personliga profil här" +msgstr "" +"Du kan ladda upp din personliga avatar. Den maximala filstorleken är %s." #: actions/avatarsettings.php:106 actions/avatarsettings.php:182 #: actions/grouplogo.php:178 actions/remotesubscribe.php:191 @@ -548,23 +544,21 @@ msgstr "Användare utan matchande profil" #: actions/avatarsettings.php:119 actions/avatarsettings.php:194 #: actions/grouplogo.php:251 -#, fuzzy msgid "Avatar settings" -msgstr "Twitter inställningar" +msgstr "Avatarinställningar" #: actions/avatarsettings.php:126 actions/avatarsettings.php:202 #: actions/grouplogo.php:199 actions/grouplogo.php:259 msgid "Original" -msgstr "" +msgstr "Orginal" #: actions/avatarsettings.php:141 actions/avatarsettings.php:214 #: actions/grouplogo.php:210 actions/grouplogo.php:271 msgid "Preview" -msgstr "" +msgstr "Förhandsgranska" #: actions/avatarsettings.php:148 lib/deleteuserform.php:66 #: lib/noticelist.php:550 -#, fuzzy msgid "Delete" msgstr "Ta bort" @@ -574,7 +568,7 @@ msgstr "Ladda upp" #: actions/avatarsettings.php:228 actions/grouplogo.php:286 msgid "Crop" -msgstr "" +msgstr "Beskär" #: actions/avatarsettings.php:265 actions/disfavor.php:74 #: actions/emailsettings.php:238 actions/favor.php:75 @@ -589,89 +583,83 @@ msgstr "" #: 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 "Det var något problem med din session. Försök igen, tack." +msgstr "Det var ett problem med din sessions-token. Var vänlig försök igen." #: actions/avatarsettings.php:277 actions/designadminpanel.php:103 #: actions/emailsettings.php:256 actions/grouplogo.php:319 #: actions/imsettings.php:220 actions/recoverpassword.php:44 #: actions/smssettings.php:248 lib/designsettings.php:304 msgid "Unexpected form submission." -msgstr "Oväntat utskick av formuläret." +msgstr "Oväntat inskick av formulär." #: actions/avatarsettings.php:322 msgid "Pick a square area of the image to be your avatar" -msgstr "" +msgstr "Välj ett kvadratiskt område i bilden som din avatar" #: actions/avatarsettings.php:337 actions/grouplogo.php:377 msgid "Lost our file data." -msgstr "" +msgstr "Förlorade vår fildata." #: actions/avatarsettings.php:360 msgid "Avatar updated." -msgstr "Användarbilden uppdaterad." +msgstr "Avatar uppdaterad." #: actions/avatarsettings.php:363 msgid "Failed updating avatar." -msgstr "Uppdatering av profilbild misslyckades." +msgstr "Misslyckades uppdatera avatar." #: actions/avatarsettings.php:387 -#, fuzzy msgid "Avatar deleted." -msgstr "Användarbilden uppdaterad." +msgstr "Avatar borttagen." #: 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/joingroup.php:76 actions/showgroup.php:121 -#, fuzzy msgid "No nickname" -msgstr "Inget användarnamn" +msgstr "Inget smeknamn" #: actions/blockedfromgroup.php:80 actions/editgroup.php:96 #: actions/groupbyid.php:83 actions/groupdesignsettings.php:97 #: actions/grouplogo.php:99 actions/groupmembers.php:83 #: actions/grouprss.php:98 actions/joingroup.php:83 actions/showgroup.php:137 -#, fuzzy msgid "No such group" -msgstr "Ingen sådan användare" +msgstr "Ingen sådan grupp" #: actions/blockedfromgroup.php:90 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "Användaren har ingen profil." +msgstr "%s blockerade profiler" #: actions/blockedfromgroup.php:93 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles, page %d" -msgstr "%s med vänner" +msgstr "%s blockerade profiler, sida %d" #: actions/blockedfromgroup.php:108 msgid "A list of the users blocked from joining this group." msgstr "" +"En lista med de användare som blockerats från att gå med i denna grupp." #: actions/blockedfromgroup.php:281 -#, fuzzy msgid "Unblock user from group" -msgstr "Ingen sådan användare" +msgstr "Häv blockering av användare från grupp" #: actions/blockedfromgroup.php:313 lib/unblockform.php:69 msgid "Unblock" -msgstr "" +msgstr "Häv blockering" #: actions/blockedfromgroup.php:313 lib/unblockform.php:80 -#, fuzzy msgid "Unblock this user" -msgstr "Ingen sådan användare" +msgstr "Häv blockering av denna användare" #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Du prenumererar redan på dessa användare:" +msgstr "Du har redan blockerat denna användare." #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160 -#, fuzzy msgid "Block user" -msgstr "Ingen sådan användare" +msgstr "Blockera användare" #: actions/block.php:130 msgid "" @@ -679,6 +667,9 @@ msgid "" "unsubscribed from you, unable to subscribe to you in the future, and you " "will not be notified of any @-replies from them." msgstr "" +"Är du säker på att du vill blockera denna användare? Efteråt kommer deras " +"prenumeration på dig tas bort, de kommer inte kunna prenumerera på dig i " +"framtiden och du kommer inte bli underrättad om några @-svar från dem." #: actions/block.php:143 actions/deletenotice.php:145 #: actions/deleteuser.php:147 actions/groupblock.php:178 @@ -686,9 +677,8 @@ msgid "No" msgstr "Nej" #: actions/block.php:143 actions/deleteuser.php:147 -#, fuzzy msgid "Do not block this user" -msgstr "Ingen sådan användare" +msgstr "Blockera inte denna användare" #: actions/block.php:144 actions/deletenotice.php:146 #: actions/deleteuser.php:148 actions/groupblock.php:179 @@ -696,17 +686,16 @@ msgid "Yes" msgstr "Ja" #: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80 -#, fuzzy msgid "Block this user" -msgstr "Ingen sådan användare" +msgstr "Blockera denna användare" #: actions/block.php:162 msgid "Failed to save block information." -msgstr "" +msgstr "Misslyckades att spara blockeringsinformation." #: actions/bookmarklet.php:50 msgid "Post to " -msgstr "" +msgstr "Posta till " #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -714,20 +703,20 @@ msgstr "Ingen bekräftelsekod." #: actions/confirmaddress.php:80 msgid "Confirmation code not found." -msgstr "Bekräftelsekoden kunde inte hittas." +msgstr "Bekräftelsekod kunde inte hittas." #: actions/confirmaddress.php:85 msgid "That confirmation code is not for you!" -msgstr "Den bekräftelsekoden är inte för dig!" +msgstr "Denna bekräftelsekod är inte för dig!" #: actions/confirmaddress.php:90 #, php-format msgid "Unrecognized address type %s" -msgstr "Adresstypen känns inte igen %s" +msgstr "Adresstypen %s känns inte igen" #: actions/confirmaddress.php:94 msgid "That address has already been confirmed." -msgstr "Den adressen har redan blivit bekräftad en gång." +msgstr "Denna adress har redan blivit bekräftad." #: actions/confirmaddress.php:114 actions/emailsettings.php:296 #: actions/emailsettings.php:427 actions/imsettings.php:258 @@ -740,7 +729,7 @@ msgstr "Kunde inte uppdatera användare." #: actions/confirmaddress.php:126 actions/emailsettings.php:391 #: actions/imsettings.php:363 actions/smssettings.php:382 msgid "Couldn't delete email confirmation." -msgstr "Kunde inte radera epost bekräftelsen." +msgstr "Kunde inte ta bort e-postbekräftelse." #: actions/confirmaddress.php:144 msgid "Confirm Address" @@ -752,18 +741,17 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "Adressen \"%s\" har blivit bekräftad för ditt konto." #: actions/conversation.php:99 -#, fuzzy msgid "Conversation" -msgstr "Bekräftelsekod" +msgstr "Konversationer" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:216 lib/searchgroupnav.php:82 msgid "Notices" -msgstr "Inlägg" +msgstr "Notiser" #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." -msgstr "Inget sådant inlägg." +msgstr "Ingen sådan notis." #: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62 #: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69 @@ -776,178 +764,165 @@ msgstr "Inte inloggad." #: actions/deletenotice.php:71 msgid "Can't delete this notice." -msgstr "Kan inte ta bort detta inlägg." +msgstr "Kan inte ta bort denna notis." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"Du håller på att tabort inlägget permanent. När det väl är gjort kan du inte " -"ångra dig." +"Du håller på att ta bort en notis permanent. När det väl är gjort kan du " +"inte ångra dig." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" -msgstr "Tabort inlägg" +msgstr "Ta bort notis" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "Är du säker på att du vill tabort detta inlägg?" +msgstr "Är du säker på att du vill ta bort denna notis?" #: actions/deletenotice.php:145 -#, fuzzy msgid "Do not delete this notice" -msgstr "Kan inte ta bort detta inlägg." +msgstr "Ta inte bort denna notis" #: actions/deletenotice.php:146 lib/noticelist.php:550 -#, fuzzy msgid "Delete this notice" -msgstr "Ta bort inlägg" +msgstr "Ta bort denna notis" #: actions/deletenotice.php:157 -#, fuzzy msgid "There was a problem with your session token. Try again, please." -msgstr "Det var något problem med din session. Försök igen, tack." +msgstr "Det var något problem med din sessions-token. Var vänlig försök igen." #: actions/deleteuser.php:67 -#, fuzzy msgid "You cannot delete users." -msgstr "Kunde inte uppdatera användare." +msgstr "Du kan inte ta bort användare." #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "Du kan inte tabort nån annan användares status." +msgstr "Du kan bara ta bort lokala användare." #: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy msgid "Delete user" -msgstr "Ta bort" +msgstr "Ta bort användare" #: actions/deleteuser.php:135 msgid "" "Are you sure you want to delete this user? This will clear all data about " "the user from the database, without a backup." msgstr "" +"Är du säker på att du vill ta bort denna användare? Det kommer rensa all " +"data om användaren från databasen, utan en säkerhetskopia." #: actions/deleteuser.php:148 lib/deleteuserform.php:77 -#, fuzzy msgid "Delete this user" -msgstr "Ta bort inlägg" +msgstr "Ta bort denna användare" #: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124 #: lib/adminpanelaction.php:302 lib/groupnav.php:119 msgid "Design" -msgstr "" +msgstr "Utseende" #: actions/designadminpanel.php:73 msgid "Design settings for this StatusNet site." -msgstr "" +msgstr "Utseendeinställningar för denna StatusNet-webbplats." -#: actions/designadminpanel.php:270 -#, fuzzy +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." -msgstr "Felaktig storlek" +msgstr "Ogiltig logtyp-URL." -#: actions/designadminpanel.php:274 -#, fuzzy, php-format +#: actions/designadminpanel.php:279 +#, php-format msgid "Theme not available: %s" -msgstr "Denna sida är inte tillgänglig i den mediatyp du accepterat" - -#: actions/designadminpanel.php:370 -#, fuzzy -msgid "Change logo" -msgstr "Ändra ditt lösenord" +msgstr "Tema inte tillgängligt: %s" #: actions/designadminpanel.php:375 -#, fuzzy +msgid "Change logo" +msgstr "Byt logotyp" + +#: actions/designadminpanel.php:380 msgid "Site logo" -msgstr "Bjud in" +msgstr "Webbplatslogotyp" -#: actions/designadminpanel.php:382 -#, fuzzy +#: actions/designadminpanel.php:387 msgid "Change theme" -msgstr "Ändra" +msgstr "Byt tema" -#: actions/designadminpanel.php:399 -#, fuzzy +#: actions/designadminpanel.php:404 msgid "Site theme" -msgstr "Nytt inlägg" +msgstr "Webbplatstema" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." -msgstr "" +msgstr "Tema för webbplatsen." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" -msgstr "" +msgstr "Ändra bakgrundsbild" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" -msgstr "" +msgstr "Bakgrund" -#: actions/designadminpanel.php:422 -#, fuzzy, php-format +#: actions/designadminpanel.php:427 +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "Du kan uppdatera din personliga profil här" +msgstr "" +"Du kan ladda upp en bakgrundsbild för denna webbplats. Den maximala " +"filstorleken är %1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" -msgstr "" +msgstr "På" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" -msgstr "" +msgstr "Av" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "Sätt på eller stäng av bakgrundsbild." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" -msgstr "" +msgstr "Upprepa bakgrundsbild" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 -#, fuzzy +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" -msgstr "Ändra ditt lösenord" +msgstr "Byt färger" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 -#, fuzzy +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" -msgstr "Anslut" +msgstr "Innehåll" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 -#, fuzzy +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" -msgstr "Sök" +msgstr "Sidofält" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 -#, fuzzy +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" -msgstr "Logga in" +msgstr "Länkar" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" -msgstr "" +msgstr "Använd standardvärden" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" -msgstr "" +msgstr "Återställ standardutseende" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" -msgstr "" +msgstr "Återställ till standardvärde" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -957,18 +932,17 @@ msgstr "" msgid "Save" msgstr "Spara" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" -msgstr "" +msgstr "Spara utseende" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "Det inlägget är ingen favorit!" +msgstr "Denna notis är inte en favorit!" #: actions/disfavor.php:94 -#, fuzzy msgid "Add to favorites" -msgstr "Feed för %s favoriter" +msgstr "Lägg till i favoriter" #: actions/doc.php:69 msgid "No such document." @@ -977,51 +951,46 @@ msgstr "Inget sådant dokument." #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "" +msgstr "Redigera %s grupp" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -#, fuzzy msgid "You must be logged in to create a group." -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att skapa en grupp." #: actions/editgroup.php:103 actions/editgroup.php:168 #: actions/groupdesignsettings.php:104 actions/grouplogo.php:106 -#, fuzzy msgid "You must be an admin to edit the group" -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att redigera gruppen" #: actions/editgroup.php:154 msgid "Use this form to edit the group." -msgstr "" +msgstr "Använd detta formulär för att redigera gruppen." #: actions/editgroup.php:201 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Biografin är för lång (max 140 tecken)" +msgstr "beskrivning är för lång (max %d tecken)." #: actions/editgroup.php:253 -#, fuzzy msgid "Could not update group." -msgstr "Kunde inte uppdatera användare." +msgstr "Kunde inte uppdatera grupp." #: actions/editgroup.php:259 classes/User_group.php:390 -#, fuzzy msgid "Could not create aliases." -msgstr "Kunde inte skapa favorit." +msgstr "Kunde inte skapa alias." #: actions/editgroup.php:269 -#, fuzzy msgid "Options saved." -msgstr "Inställningar sparade." +msgstr "Alternativ sparade." #: actions/emailsettings.php:60 msgid "Email Settings" -msgstr "Email inställningar" +msgstr "E-postinställningar" #: actions/emailsettings.php:71 #, php-format msgid "Manage how you get email from %%site.name%%." -msgstr "Ställ in hur du tar emot email ifrån %%site.name%%" +msgstr "Hantera hur du får e-post från %%site.name%%" #: actions/emailsettings.php:100 actions/imsettings.php:100 #: actions/smssettings.php:104 @@ -1030,7 +999,7 @@ msgstr "Adress" #: actions/emailsettings.php:105 msgid "Current confirmed email address." -msgstr "Nuvarande bekräftade emailadress." +msgstr "Aktuell, bekräftad e-postadress." #: actions/emailsettings.php:107 actions/emailsettings.php:140 #: actions/imsettings.php:108 actions/smssettings.php:115 @@ -1043,8 +1012,8 @@ msgid "" "Awaiting confirmation on this address. Check your inbox (and spam box!) for " "a message with further instructions." msgstr "" -"Väntar bekräftelse på denna adress. Kontrollera din inbox (och spamlådan!) " -"efter meddelande om vidare instruktioner." +"Väntar bekräftelse av denna adress. Kontrollera din inkorg (och " +"skräppostkorg!) efter ett meddelande med vidare instruktioner." #: actions/emailsettings.php:117 actions/imsettings.php:120 #: actions/smssettings.php:126 @@ -1053,11 +1022,11 @@ msgstr "Avbryt" #: actions/emailsettings.php:121 msgid "Email Address" -msgstr "Emailadress" +msgstr "E-postadress" #: actions/emailsettings.php:123 msgid "Email address, like \"UserName@example.org\"" -msgstr "Emailadress såsom \"användare@example.org\"" +msgstr "E-postadress, såsom \"användarnamn@exempel.se\"" #: actions/emailsettings.php:126 actions/imsettings.php:133 #: actions/smssettings.php:145 @@ -1066,15 +1035,16 @@ msgstr "Lägg till" #: actions/emailsettings.php:133 actions/smssettings.php:152 msgid "Incoming email" -msgstr "Inkommande email" +msgstr "Inkommande e-post" #: actions/emailsettings.php:138 actions/smssettings.php:157 msgid "Send email to this address to post new notices." -msgstr "Skicka email till denna adress för att posta ett nya inlägg." +msgstr "Skicka e-post till denna adress för att posta nya notiser." #: actions/emailsettings.php:145 actions/smssettings.php:162 msgid "Make a new email address for posting to; cancels the old one." -msgstr "Skapa en ny emailadress för att posta till, avaktiverar den gamla" +msgstr "" +"Ange en ny e-postadress för att posta till; detta inaktiverar den gamla." #: actions/emailsettings.php:148 actions/smssettings.php:164 msgid "New" @@ -1087,7 +1057,7 @@ msgstr "Inställningar" #: actions/emailsettings.php:158 msgid "Send me notices of new subscriptions through email." -msgstr "Skicka meddelande till mig via email vid nya prenumerationer." +msgstr "Skicka notiser om nya prenumerationer till mig genom e-post." #: actions/emailsettings.php:163 msgid "Send me email when someone adds my notice as a favorite." @@ -1095,24 +1065,23 @@ msgstr "Skicka mig ett email när någon lägger till mitt inlägg som favorit." #: actions/emailsettings.php:169 msgid "Send me email when someone sends me a private message." -msgstr "Skicka mig ett email när någon sänder ett privat meddelande." +msgstr "Skicka mig e-post när någon skickar mig ett privat meddelande." #: actions/emailsettings.php:174 -#, fuzzy msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Skicka mig ett email när någon sänder ett privat meddelande." +msgstr "Skicka mig e-post när någon skickar ett \"@-svar\"." #: actions/emailsettings.php:179 msgid "Allow friends to nudge me and send me an email." -msgstr "" +msgstr "Tillåt vänner att knuffa mig och skicka e-post till mig." #: actions/emailsettings.php:185 msgid "I want to post notices by email." -msgstr "Jag vill posta inlägg via min email." +msgstr "Jag vill posta notiser genom min e-post." #: actions/emailsettings.php:191 msgid "Publish a MicroID for my email address." -msgstr "Publicera ett MicroID för min emailadress." +msgstr "Publicera ett MicroID för min e-postadress." #: actions/emailsettings.php:302 actions/imsettings.php:264 #: actions/othersettings.php:180 actions/smssettings.php:284 @@ -1121,37 +1090,37 @@ msgstr "Inställningar sparade." #: actions/emailsettings.php:320 msgid "No email address." -msgstr "Ingen emailadress." +msgstr "Ingen e-postadress." #: actions/emailsettings.php:327 msgid "Cannot normalize that email address" -msgstr "Kan inte normalisera den emailadressen" +msgstr "Kan inte normalisera den e-postadressen" #: actions/emailsettings.php:331 actions/siteadminpanel.php:158 msgid "Not a valid email address" -msgstr "Ingen giltig emailadress" +msgstr "Inte en giltig e-postadress" #: actions/emailsettings.php:334 msgid "That is already your email address." -msgstr "Det är redan din emailadress." +msgstr "Detta är redan din e-postadress." #: actions/emailsettings.php:337 msgid "That email address already belongs to another user." -msgstr "Den emailadressen tillhör redan en annan användare." +msgstr "Den e-postadressen tillhör redan en annan användare." #: actions/emailsettings.php:353 actions/imsettings.php:317 #: actions/smssettings.php:337 msgid "Couldn't insert confirmation code." -msgstr "Kunde inte lägga till bekräftelsekoden." +msgstr "Kunde inte infoga bekräftelsekod." #: actions/emailsettings.php:359 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äftelsekod har skickats ut till email adressen du fyllde i. " -"Kontrollera din inbox (och spamlådan!) efter kod och instruktioner hur du " -"använder den." +"En bekräftelsekod har skickats till e-postadressen du lade till. Kontrollera " +"din inkorg (och skräppostkorg!) för koden och instruktioner hur du använder " +"den." #: actions/emailsettings.php:379 actions/imsettings.php:351 #: actions/smssettings.php:370 @@ -1160,58 +1129,58 @@ msgstr "Ingen väntande bekräftelse att avbryta." #: actions/emailsettings.php:383 actions/imsettings.php:355 msgid "That is the wrong IM address." -msgstr "Det är fel IM adress." +msgstr "Detta är fel IM-adress." #: actions/emailsettings.php:395 actions/imsettings.php:367 #: actions/smssettings.php:386 msgid "Confirmation cancelled." -msgstr "Verifikation avbruten" +msgstr "Bekräftelse avbruten." #: actions/emailsettings.php:413 msgid "That is not your email address." -msgstr "Det är inte din emailadress." +msgstr "Detta är inte din e-postadress." #: actions/emailsettings.php:432 actions/imsettings.php:408 #: actions/smssettings.php:425 msgid "The address was removed." -msgstr "Adressen är borttagen." +msgstr "Adressen togs bort." #: actions/emailsettings.php:446 actions/smssettings.php:518 msgid "No incoming email address." -msgstr "Ingen inkommande emailadress." +msgstr "Ingen inkommande e-postadress." #: actions/emailsettings.php:456 actions/emailsettings.php:478 #: actions/smssettings.php:528 actions/smssettings.php:552 msgid "Couldn't update user record." -msgstr "Kunde inte uppdatera användarens inställningar." +msgstr "Kunde inte uppdatera användaruppgift." #: actions/emailsettings.php:459 actions/smssettings.php:531 msgid "Incoming email address removed." -msgstr "Inkommande emailadress borttagen." +msgstr "Inkommande e-postadress borttagen." #: actions/emailsettings.php:481 actions/smssettings.php:555 msgid "New incoming email address added." -msgstr "Ny inkommande emailadress inlagd." +msgstr "Ny inkommande e-postadress tillagd." #: actions/favorited.php:65 lib/popularnoticesection.php:88 #: lib/publicgroupnav.php:93 -#, fuzzy msgid "Popular notices" -msgstr "Inget sådant inlägg." +msgstr "Populära notiser" #: actions/favorited.php:67 -#, fuzzy, php-format +#, php-format msgid "Popular notices, page %d" -msgstr "Inget sådant inlägg." +msgstr "Populära notiser, sida %d" #: actions/favorited.php:79 -#, fuzzy msgid "The most popular notices on the site right now." -msgstr "Visar dom populäraste taggarna ifrån den senaste veckan." +msgstr "De mest populära notiserna på webbplatsen just nu." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" +"Favoritnotiser kommer upp på denna sida, men ingen har markerat några " +"favoriter än." #: actions/favorited.php:153 msgid "" @@ -1225,26 +1194,27 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" +"Varför inte [registrera ett konto](%%action.register%%) och bli först att " +"lägga en notis till dina favoriter!" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "" +msgstr "%ss favoritnotiser" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "Uppdateringar från %1$s på %2$s!" +msgstr "Uppdateringar markerade som favorit av %1$s på %2$s!" #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "Detta inlägg är redan en favorit!" +msgstr "Denna notis är redan en favorit!" #: actions/favor.php:92 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor favorite" -msgstr "Avfavorisera" +msgstr "Ta bort märkning som favorit" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1262,114 +1232,99 @@ msgid "A selection of some of the great users on %s" msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice id" -msgstr "Nytt inlägg" +msgstr "Ingen notis-ID" #: actions/file.php:38 -#, fuzzy msgid "No notice" -msgstr "Nytt inlägg" +msgstr "Ingen notis" #: actions/file.php:42 msgid "No attachments" -msgstr "" +msgstr "Inga bilagor" #: actions/file.php:51 msgid "No uploaded attachments" -msgstr "" +msgstr "Inga uppladdade bilagor" #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" -msgstr "Väntade mig inte detta svar!" +msgstr "Väntade mig inte denna respons!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "Användaren som avlyssnas existerar inte." +msgstr "Användaren som lyssnas på existerar inte." #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" -msgstr "Du kan använda lokala prenumerationer!" +msgstr "Du kan använda den lokala prenumerationen!" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -msgstr "" +msgstr "Denna användaren har blockerat dig från att prenumerera." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Inte tillstånd ännu." +msgstr "Du har inte tillstånd." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Kunde inte konvertera förfrågan tokens till Access tokens." +msgstr "Kunde inte konvertera förfrågnings-token till access-token." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Okänd version av OMB protokollet." +msgstr "Fjärrtjänsten använder en okänd version av OMB-protokollet." #: actions/finishremotesubscribe.php:138 lib/oauthstore.php:306 msgid "Error updating remote profile" -msgstr "Fel uppstog under uppdatering av fjärranvändare" +msgstr "Fel vid uppdatering av fjärrprofil" #: actions/foafgroup.php:44 actions/foafgroup.php:62 actions/groupblock.php:86 #: actions/groupunblock.php:86 actions/leavegroup.php:83 #: actions/makeadmin.php:86 lib/command.php:212 lib/command.php:263 -#, fuzzy msgid "No such group." -msgstr "Inget sådant meddelande." +msgstr "Ingen sådan grupp." #: actions/getfile.php:75 -#, fuzzy msgid "No such file." -msgstr "Inget sådant inlägg." +msgstr "Ingen sådan fil." #: actions/getfile.php:79 -#, fuzzy msgid "Cannot read file." -msgstr "Inget sådant inlägg." +msgstr "Kan inte läsa fil." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 #: lib/profileformaction.php:70 -#, fuzzy msgid "No profile specified." -msgstr "Ingen mottagare tillagd." +msgstr "Ingen profil angiven." #: actions/groupblock.php:76 actions/groupunblock.php:76 #: actions/makeadmin.php:76 actions/subedit.php:53 actions/tagother.php:46 #: lib/profileformaction.php:77 -#, fuzzy msgid "No profile with that ID." -msgstr "Ingen status hittad med det ID" +msgstr "Ingen profil med det ID:t." #: actions/groupblock.php:81 actions/groupunblock.php:81 #: actions/makeadmin.php:81 -#, fuzzy msgid "No group specified." -msgstr "Ingen mottagare tillagd." +msgstr "Ingen grupp angiven." #: actions/groupblock.php:91 msgid "Only an admin can block group members." -msgstr "" +msgstr "Bara en administratör kan blockera gruppmedlemmar." #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "Användaren har ingen profil." +msgstr "Användaren är redan blockerad från grupp." #: actions/groupblock.php:100 -#, fuzzy msgid "User is not a member of group." -msgstr "Du skickade inte oss den profilen" +msgstr "Användare är inte en gruppmedlem." #: actions/groupblock.php:136 actions/groupmembers.php:314 -#, fuzzy msgid "Block user from group" -msgstr "Ingen sådan användare" +msgstr "Blockera användare från grupp" #: actions/groupblock.php:162 #, php-format @@ -1378,141 +1333,137 @@ msgid "" "be removed from the group, unable to post, and unable to subscribe to the " "group in the future." msgstr "" +"Är du säker på att du vill blockera användare \"%s\" från gruppen \"%s\"? De " +"kommer bli borttagna från gruppen, inte kunna posta och inte kunna " +"prenumerera på gruppen i framtiden." #: actions/groupblock.php:178 -#, fuzzy msgid "Do not block this user from this group" -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Blockera inte denna användare från denna grupp" #: actions/groupblock.php:179 -#, fuzzy msgid "Block this user from this group" -msgstr "Ingen sådan användare" +msgstr "Blockera denna användare från denna grupp" #: actions/groupblock.php:196 msgid "Database error blocking user from group." -msgstr "" +msgstr "Databasfel vid blockering av användare från grupp." #: actions/groupbyid.php:74 msgid "No ID" -msgstr "" +msgstr "Ingen ID" #: actions/groupdesignsettings.php:68 -#, fuzzy msgid "You must be logged in to edit a group." -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att redigera en grupp." #: actions/groupdesignsettings.php:141 msgid "Group design" -msgstr "" +msgstr "Gruppens utseende" #: actions/groupdesignsettings.php:152 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" +"Anpassa hur din grupp ser ut genom att välja bakgrundbild och färgpalett. " -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 -#, fuzzy +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." -msgstr "Kunde inte uppdatera användare." +msgstr "Kunde inte uppdatera dina utseendeinställningar." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 -#, fuzzy msgid "Unable to save your design settings!" -msgstr "Kunde inte spara dina Twitter inställningar!" +msgstr "Kunde inte spara dina utseendeinställningar!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 -#, fuzzy +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." -msgstr "Inställningar sparade." +msgstr "Utseendeinställningar sparade." #: actions/grouplogo.php:139 actions/grouplogo.php:192 msgid "Group logo" -msgstr "" +msgstr "Gruppens logotyp" #: actions/grouplogo.php:150 #, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." msgstr "" +"Du kan ladda upp en logotypbild för din grupp. Den maximala filstorleken är %" +"s." #: actions/grouplogo.php:362 msgid "Pick a square area of the image to be the logo." -msgstr "" +msgstr "Välj ett kvadratiskt område i bilden som logotyp" #: actions/grouplogo.php:396 -#, fuzzy msgid "Logo updated." -msgstr "Användarbilden uppdaterad." +msgstr "Logtyp uppdaterad." #: actions/grouplogo.php:398 -#, fuzzy msgid "Failed updating logo." -msgstr "Uppdatering av profilbild misslyckades." +msgstr "Misslyckades uppdatera logtyp." #: actions/groupmembers.php:93 lib/groupnav.php:92 #, php-format msgid "%s group members" -msgstr "" +msgstr "%s " #: actions/groupmembers.php:96 #, php-format msgid "%s group members, page %d" -msgstr "" +msgstr "%s gruppmedlemmar, sida %d" #: actions/groupmembers.php:111 msgid "A list of the users in this group." -msgstr "" +msgstr "En lista av användarna i denna grupp." #: actions/groupmembers.php:175 lib/action.php:440 lib/groupnav.php:107 msgid "Admin" -msgstr "" +msgstr "Administratör" #: actions/groupmembers.php:346 lib/blockform.php:69 msgid "Block" -msgstr "" +msgstr "Blockera" #: actions/groupmembers.php:441 -#, fuzzy msgid "Make user an admin of the group" -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Gör användare till en administratör för gruppen" #: actions/groupmembers.php:473 msgid "Make Admin" -msgstr "" +msgstr "Gör till administratör" #: actions/groupmembers.php:473 msgid "Make this user an admin" -msgstr "" +msgstr "Gör denna användare till administratör" #: actions/grouprss.php:133 -#, fuzzy, php-format +#, php-format msgid "Updates from members of %1$s on %2$s!" -msgstr "Uppdateringar från %1$s på %2$s!" +msgstr "Uppdateringar från medlemmar i %1$s på %2$s!" #: 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 "" -"Sök efter personer på %%site.name%% efter deras namn, plats eller intressen. " -"Skilj söktermerna åt med mellanslag; de måste vara minst tre tecken långa. " +"Sök efter grupper på %%site.name%% efter deras namn, plats eller " +"beskrivning. Skilj söktermerna åt med mellanslag; de måste vara minst tre " +"tecken långa." #: actions/groupsearch.php:58 -#, fuzzy msgid "Group search" -msgstr "Sökning personer" +msgstr "Gruppsökning" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Inget resultat" +msgstr "Inga resultat." #: actions/groupsearch.php:82 #, php-format @@ -1520,6 +1471,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Om du inte kan hitta gruppen du söker efter kan du [skapa den](%%action." +"newgroup%%) själv." #: actions/groupsearch.php:85 #, php-format @@ -1527,16 +1480,18 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"Varför inte [registrera ett konto](%%action.register%%) och [skapa gruppen](%" +"%action.newgroup%%) själv!" #: actions/groups.php:62 lib/profileaction.php:210 lib/profileaction.php:230 #: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 msgid "Groups" -msgstr "" +msgstr "Grupper" #: actions/groups.php:64 #, php-format msgid "Groups, page %d" -msgstr "" +msgstr "Grupper, sida %d" #: actions/groups.php:90 #, php-format @@ -1547,29 +1502,31 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" +"%%%%site.name%%%% grupper låter dig hitta och prata med personer med " +"liknande intressen. Efter att ha gått med i en grupp kan du skicka " +"meddelanden till alla andra medlemmar mha. syntaxen \"!gruppnamn\". Ser du " +"inte någon grupp du gillar? Prova att [söka efter en](%%%%action.groupsearch%" +"%%%) eller [starta din egen!](%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "Skapa ett nytt konto" +msgstr "Skapa en ny grupp" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Bara en administratör kan häva blockering av gruppmedlemmar." #: actions/groupunblock.php:95 -#, fuzzy msgid "User is not blocked from group." -msgstr "Användaren har ingen profil." +msgstr "Användare är inte blockerad från grupp." #: actions/groupunblock.php:128 actions/unblock.php:77 -#, fuzzy msgid "Error removing the block." -msgstr "Fel uppstog när användaren skulle sparas." +msgstr "Fel vid hävning av blockering." #: actions/imsettings.php:59 msgid "IM Settings" -msgstr "IM inställningar" +msgstr "IM-inställningar" #: actions/imsettings.php:70 #, php-format @@ -1577,13 +1534,12 @@ msgid "" "You can send and receive notices through Jabber/GTalk [instant messages](%%" "doc.im%%). Configure your address and settings below." msgstr "" -"Du kan skicka och ta emot inlägg genom Jabber/GTalk [instant messages](%%doc." -"im%%). Konfigurera din adress och inställningar nedan. " +"Du kan skicka och ta emot notiser genom Jabber/GTalk [snabbmeddelanden](%%" +"doc.im%%). Konfigurera din adress och dina inställningar nedan." #: actions/imsettings.php:89 -#, fuzzy msgid "IM is not available." -msgstr "Denna sida är inte tillgänglig i den mediatyp du accepterat" +msgstr "IM är inte tillgänglig." #: actions/imsettings.php:106 msgid "Current confirmed Jabber/GTalk address." @@ -1595,12 +1551,12 @@ 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 "" -"Väntar bekräftelse på denna adress. Kontrollera ditt Jabber/GTalk konto för " -"vidare instruktioner. (La du till %s i din vännerlista?)" +"Väntar bekräftelse av denna adress. Kontrollera ditt Jabber/GTalk-konto för " +"vidare instruktioner. (La du till %s i din kompislista?)" #: actions/imsettings.php:124 msgid "IM Address" -msgstr "IM adress" +msgstr "IM-adress" #: actions/imsettings.php:126 #, php-format @@ -1608,46 +1564,46 @@ 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 adress liknande \"användare@exempel.se\". Först se till " -"att lägga till %s i din vännerlista i IM klienten eller GTalk." +"Jabber- eller GTalk-adress liknande \"användare@exempel.se\". Se först till " +"att lägga till %s i din kompislista i din IM-klient eller hos GTalk." #: actions/imsettings.php:143 msgid "Send me notices through Jabber/GTalk." -msgstr "Skicka inlägg till mig via Jabber/GTalk." +msgstr "Skicka notiser till mig genom Jabber/GTalk." #: actions/imsettings.php:148 msgid "Post a notice when my Jabber/GTalk status changes." -msgstr "Posta ett inlägg när min Jabber/GTalk status ändras." +msgstr "Posta en notis när min Jabber/GTalk-status ändras." #: actions/imsettings.php:153 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." msgstr "" -"Skicka svar till mig via Jabber/GTalk från personer som inte jag " +"Skicka svar till mig genom Jabber/GTalk från personer som jag inte " "prenumererar på." #: actions/imsettings.php:159 msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "Publicera ett MicroID för min Jabber/GTalk adress." +msgstr "Publicera ett MicroID för min Jabber/GTalk-adress." #: actions/imsettings.php:285 msgid "No Jabber ID." -msgstr "Inget Jabber ID." +msgstr "Inget Jabber-ID." #: actions/imsettings.php:292 msgid "Cannot normalize that Jabber ID" -msgstr "Kan inte normalisera det Jabber ID" +msgstr "Kan inte normalisera detta Jabber-ID" #: actions/imsettings.php:296 msgid "Not a valid Jabber ID" -msgstr "Det är inget giltigt Jabber ID" +msgstr "Inte ett giltigt Jabber-ID" #: actions/imsettings.php:299 msgid "That is already your Jabber ID." -msgstr "Det är redan din Jabber ID." +msgstr "Detta är redan ditt Jabber-ID" #: actions/imsettings.php:302 msgid "Jabber ID already belongs to another user." -msgstr "Jabber ID används redan utav en annan användare." +msgstr "Jabber-ID:t tillhör redan en annan användare." #: actions/imsettings.php:327 #, php-format @@ -1655,44 +1611,45 @@ msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." msgstr "" -"En bekräftelsekod har skickats till den IM-adress som du angav. Du måste " +"En bekräftelsekod har skickats till den IM-adress du angav. Du måste " "godkänna att %s får skicka meddelanden till dig." #: actions/imsettings.php:387 msgid "That is not your Jabber ID." -msgstr "Det är inte ditt Jabber ID." +msgstr "Detta är inte ditt Jabber-ID." #: actions/inbox.php:59 #, php-format msgid "Inbox for %s - page %d" -msgstr "Inbox för %s - sida %d" +msgstr "Inkorg för %s - sida %d" #: actions/inbox.php:62 #, php-format msgid "Inbox for %s" -msgstr "Inbox för %s" +msgstr "Inkorg för %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." -msgstr "Detta är din inbox som innehåller dina privata meddelanden." +msgstr "" +"Detta är din inkorg som innehåller dina inkommande privata meddelanden." #: actions/invite.php:39 msgid "Invites have been disabled." -msgstr "" +msgstr "Inbjudningar har blivit inaktiverade." #: actions/invite.php:41 #, php-format msgid "You must be logged in to invite other users to use %s" -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att kunna bjuda in andra användare till %s" #: actions/invite.php:72 #, php-format msgid "Invalid email address: %s" -msgstr "Ogiltig emailadress: %s" +msgstr "Ogiltig e-postadress: %s" #: actions/invite.php:110 msgid "Invitation(s) sent" -msgstr "Inbjudan(ar) skickad" +msgstr "Inbjudan(ar) skickad(e)" #: actions/invite.php:112 msgid "Invite new users" @@ -1705,25 +1662,25 @@ msgstr "Du prenumererar redan på dessa användare:" #: actions/invite.php:131 actions/invite.php:139 #, php-format msgid "%s (%s)" -msgstr "%s(%s)" +msgstr "%s (%s)" #: actions/invite.php:136 msgid "" "These people are already users and you were automatically subscribed to them:" msgstr "" -"Dom personerna är redan registrerade användare och du blev nu automatiskt " -"prenumerant till dom:" +"Dessa personer är redan registrerade användare och du blev automatiskt " +"prenumerat hos dem:" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" -msgstr "Inbjudan(ar) är skickade till följande personer:" +msgstr "Inbjudning(ar) har skickats till följande 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 kommer bli meddelad när någon du bjudit in accepterar inbjudan och " +"Du kommer bli meddelad när någon du bjudit in accepterar inbjudan och " "registrerar sig. Tack för att du hjälper oss växa!" #: actions/invite.php:162 @@ -1731,11 +1688,11 @@ msgid "" "Use this form to invite your friends and colleagues to use this service." msgstr "" "Använd detta formulär för att bjuda in dina vänner och kollegor till denna " -"sida." +"webbplats." #: actions/invite.php:187 msgid "Email addresses" -msgstr "Emailadresser" +msgstr "E-postadresser" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" @@ -1747,16 +1704,16 @@ msgstr "Personligt meddelande" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "Om du vill, skriv ett personligt meddelande med inbjudan." +msgstr "Om du vill, skriv ett personligt meddelande till inbjudan." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Skicka" #: actions/invite.php:226 #, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "%1$s har bjudit in dig till %2$s" +msgstr "%1$s har bjudit in dig att gå med dem på %2$s" #: actions/invite.php:228 #, php-format @@ -1788,92 +1745,62 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" -"%1$s har bjudit in dig till %2$s (%3$s).\n" -"\n" -"%2$s är en mikroblogg service som låter dig via sidan hålla direktkontakt " -"med människor du känner eller intresserar dig.\n" -"\n" -"Du kan även dela med dig utav nyheter om dig själv, dina tankar, eller ditt " -"liv online som känner igen dig. Det är också perfekt för att möta nya " -"personer som delar ditt intresse.\n" -"\n" -"%1$s sa:\n" -"\n" -"%4$s\n" -"\n" -"Du kan se %1$s's profilsida på %2$s här:\n" -"\n" -"%5$s\n" -"\n" -"Om du vill prova på denna service, klicka på länken nedan för att acceptera " -"denna inbjudan.\n" -"\n" -"%6$s\n" -"\n" -"Om inte, då kan du ignorera detta meddelande. Tack för att du tog dig\n" #: actions/joingroup.php:60 -#, fuzzy msgid "You must be logged in to join a group." -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att kunna gå med i en grupp." #: actions/joingroup.php:90 lib/command.php:217 -#, fuzzy msgid "You are already a member of that group" -msgstr "Du prenumererar redan på dessa användare:" +msgstr "Du är redan en medlem i denna grupp" #: actions/joingroup.php:128 lib/command.php:234 -#, fuzzy, php-format +#, php-format msgid "Could not join user %s to group %s" -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte ansluta användare %s till groupp %s" #: actions/joingroup.php:135 lib/command.php:239 -#, fuzzy, php-format +#, php-format msgid "%s joined group %s" -msgstr "%s / Favoriter från %s" +msgstr "%s gick med i grupp %s" #: actions/leavegroup.php:60 -#, fuzzy msgid "You must be logged in to leave a group." -msgstr "du måste vara inloggad för att kunna bjuda in andra användare till %s" +msgstr "Du måste vara inloggad för att lämna en grupp." #: actions/leavegroup.php:90 lib/command.php:268 -#, fuzzy msgid "You are not a member of that group." -msgstr "Du skickade inte oss den profilen" +msgstr "Du är inte en medlem i den gruppen." #: actions/leavegroup.php:119 lib/command.php:278 -#, fuzzy msgid "Could not find membership record." -msgstr "Kunde inte uppdatera användarens inställningar." +msgstr "Kunde inte hitta uppgift om medlemskap." #: actions/leavegroup.php:127 lib/command.php:284 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %s to group %s" -msgstr "Kunde inte följa användaren: Användaren kunde inte hittas." +msgstr "Kunde inte ta bort användare %s från grupp %s" #: actions/leavegroup.php:134 lib/command.php:289 #, php-format msgid "%s left group %s" -msgstr "" +msgstr "%s lämnade grupp %s" #: actions/login.php:79 actions/register.php:137 msgid "Already logged in." msgstr "Redan inloggad." #: actions/login.php:108 actions/login.php:118 -#, fuzzy msgid "Invalid or expired token." -msgstr "Ogiltig innehåll i inlägget " +msgstr "Ogiltig eller utgången token." #: actions/login.php:146 msgid "Incorrect username or password." msgstr "Felaktigt användarnamn eller lösenord." #: actions/login.php:152 -#, fuzzy msgid "Error setting user. You are probably not authorized." -msgstr "Inte tillstånd ännu." +msgstr "Fel vid inställning av användare. Du har sannolikt inte tillstånd." #: actions/login.php:207 actions/login.php:260 lib/action.php:458 #: lib/logingroupnav.php:79 @@ -1882,7 +1809,7 @@ msgstr "Logga in" #: actions/login.php:246 msgid "Login to site" -msgstr "" +msgstr "Logga in på webbplatsen" #: actions/login.php:249 actions/profilesettings.php:106 #: actions/register.php:423 actions/showgroup.php:236 actions/tagother.php:94 @@ -1901,60 +1828,59 @@ msgstr "Kom ihåg mig" #: actions/login.php:256 actions/register.php:479 msgid "Automatically login in the future; not for shared computers!" -msgstr "Logga in automatiskt i framtiden; Ej för publika datorer!" +msgstr "Logga in automatiskt i framtiden; inte för delade datorer!" #: actions/login.php:266 msgid "Lost or forgotten password?" -msgstr "Glömt bort lösenord?" +msgstr "Tappat bort eller glömt ditt lösenord?" #: actions/login.php:285 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -"Av säkerhetsskäl, var vänlig skriv in ditt användarnamn och lösenord innan " -"du ändrar dina inställningar." +"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:289 -#, fuzzy, php-format +#, php-format msgid "" "Login with your username and password. Don't have a username yet? [Register]" "(%%action.register%%) a new account." msgstr "" "Logga in med ditt användarnamn och lösenord. Har du inget användarnamn ännu? " -"[Registrera](%%action.register%%) ett nytt konto, eller testa [OpenID](%%" -"action.openidlogin%%)." +"[Registrera](%%action.register%%) ett nytt konto." #: actions/makeadmin.php:91 msgid "Only an admin can make another user an admin." -msgstr "" +msgstr "Bara en administratör kan göra en annan användare till administratör." #: actions/makeadmin.php:95 #, php-format msgid "%s is already an admin for group \"%s\"." -msgstr "" +msgstr "%s är redan en administratör för grupp \"%s\"." #: actions/makeadmin.php:132 #, php-format msgid "Can't get membership record for %s in group %s" -msgstr "" +msgstr "Kan inte hämta uppgift om medlemskap för %s i grupp %s" #: actions/makeadmin.php:145 #, php-format msgid "Can't make %s an admin for group %s" -msgstr "" +msgstr "Kan inte göra %s till en administratör för grupp %s" #: actions/microsummary.php:69 msgid "No current status" -msgstr "" +msgstr "Ingen aktuell status" #: actions/newgroup.php:53 msgid "New group" -msgstr "" +msgstr "Ny grupp" #: actions/newgroup.php:110 msgid "Use this form to create a new group." -msgstr "" +msgstr "Använd detta formulär för att skapa en ny grupp." #: actions/newmessage.php:71 actions/newmessage.php:231 msgid "New message" @@ -1962,7 +1888,7 @@ msgstr "Nytt meddelande" #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:367 msgid "You can't send a message to this user." -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Du kan inte skicka ett meddelande till den användaren." #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:351 #: lib/command.php:424 @@ -1971,35 +1897,35 @@ msgstr "Inget innehåll!" #: actions/newmessage.php:158 msgid "No recipient specified." -msgstr "Ingen mottagare tillagd." +msgstr "Ingen mottagare angiven." #: actions/newmessage.php:164 lib/command.php:370 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." -msgstr "Skicka inte meddelande till dig själv, viska lite tyst istället." +msgstr "" +"Skicka inte meddelande till dig själv; viska lite tyst till dig själv " +"istället." #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "Nytt meddelande" +msgstr "Meddelande skickat" #: actions/newmessage.php:185 lib/command.php:375 #, php-format msgid "Direct message to %s sent" -msgstr "" +msgstr "Direktmeddelande till %s skickat" #: actions/newmessage.php:210 actions/newnotice.php:240 lib/channel.php:170 msgid "Ajax Error" -msgstr "" +msgstr "AJAX-fel" #: actions/newnotice.php:69 msgid "New notice" -msgstr "Nytt inlägg" +msgstr "Ny notis" #: actions/newnotice.php:206 -#, fuzzy msgid "Notice posted" -msgstr "Inlägg" +msgstr "Notis postad" #: actions/noticesearch.php:68 #, php-format @@ -2007,17 +1933,17 @@ 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 efter innehåll i inlägg på %%site.name%%. Skilj söktermerna åt med " -"mellanslag; dom måste vara minst tre tecken långa." +"Sök efter innehåll i notiser på %%site.name%%. Skilj söktermerna åt med " +"mellanslag; de måste vara minst tre tecken långa." #: actions/noticesearch.php:78 msgid "Text search" -msgstr "Text sökning" +msgstr "Textsökning" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%s\" on %s" -msgstr "Sök i strömmen efter \"%s\"" +msgstr "Sökresultat för \"%s\" på %s" #: actions/noticesearch.php:121 #, php-format @@ -2025,6 +1951,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"Bli först att [posta i detta ämne](%%%%action.newnotice%%%%?status_textarea=%" +"s)!" #: actions/noticesearch.php:124 #, php-format @@ -2032,123 +1960,121 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"Varför inte [registrera ett konto](%%%%action.register%%%%) och bli först " +"att [posta i detta ämne](%%%%action.newnotice%%%%?status_textarea=%s)!" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Uppdateringar från %1$s på %2$s!" +msgstr "Uppdateringar med \"%s\"" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Alla uppdateringar som matchar söksträngen \"%s\"" +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." 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" -msgstr "" +msgstr "Knuff sänd" #: actions/nudge.php:97 msgid "Nudge sent!" -msgstr "" +msgstr "Knuff sänd!" #: actions/oembed.php:79 actions/shownotice.php:100 msgid "Notice has no profile" -msgstr "Inlägget har ingen profil" +msgstr "Notisen har ingen profil" #: actions/oembed.php:86 actions/shownotice.php:180 #, php-format msgid "%1$s's status on %2$s" -msgstr "%1$s's status den %2$s" +msgstr "%1$ss status den %2$s" #: actions/oembed.php:157 -#, fuzzy msgid "content type " -msgstr "Anslut" +msgstr "innehållstyp " #: actions/oembed.php:160 msgid "Only " -msgstr "" +msgstr "Bara " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." -msgstr "Ingen support för det formatet." +msgstr "Ett dataformat som inte stödjs" #: actions/opensearch.php:64 msgid "People Search" -msgstr "Personer sökning" +msgstr "Personsökning" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "Inlägg sökning" +msgstr "Notissökning" #: actions/othersettings.php:60 -#, fuzzy msgid "Other Settings" -msgstr "Twitter inställningar" +msgstr "Övriga inställningar" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "" +msgstr "Hantera diverse andra alternativ. " #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr "(fri tjänst)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "Förkorta URL:er med" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "" +msgstr "Automatiska förkortningstjänster att använda." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "Profil inställningar" +msgstr "Visa profilutseenden" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "Visa eller göm profilutseenden." #: actions/othersettings.php:153 -#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "Språket är för långt(max 50 tecken)." +msgstr "Namnet på URL-förkortningstjänsen är för långt (max 50 tecken). " #: actions/outbox.php:58 #, php-format msgid "Outbox for %s - page %d" -msgstr "Outbox för %s - sida %d" +msgstr "Utkorg för %s - sida %d" #: actions/outbox.php:61 #, php-format msgid "Outbox for %s" -msgstr "Outbox för %s" +msgstr "Utkorg för %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." -msgstr "Detta är din outbox som innehåller meddelanden som du skickat." +msgstr "Detta är din utkorg som innehåller privata meddelanden du har skickat." #: actions/passwordsettings.php:58 msgid "Change password" msgstr "Byt lösenord" #: actions/passwordsettings.php:69 -#, fuzzy msgid "Change your password." -msgstr "Ändra ditt lösenord" +msgstr "Byt ditt lösenord." #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy msgid "Password change" -msgstr "Lösenord är sparat." +msgstr "Byte av lösenord" #: actions/passwordsettings.php:104 msgid "Old password" @@ -2185,127 +2111,120 @@ msgstr "Lösenorden matchar inte." #: actions/passwordsettings.php:165 msgid "Incorrect old password" -msgstr "Felaktigt, gammalt lösenord" +msgstr "Felaktigt gammalt lösenord" #: actions/passwordsettings.php:181 msgid "Error saving user; invalid." -msgstr "Fel uppstog när användare skulle sparas." +msgstr "Fel vid sparande av användare; ogiltig." #: actions/passwordsettings.php:186 actions/recoverpassword.php:368 msgid "Can't save new password." -msgstr "Kan inte spara det nya lösenordet." +msgstr "Kan inte spara nytt lösenord." #: actions/passwordsettings.php:192 actions/recoverpassword.php:211 msgid "Password saved." -msgstr "Lösenord är sparat." +msgstr "Lösenord sparat." #: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:308 msgid "Paths" -msgstr "" +msgstr "Sökvägar" #: actions/pathsadminpanel.php:70 msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Sökvägs- och serverinställningar för denna StatusNet-webbplats." #: actions/pathsadminpanel.php:140 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s" -msgstr "Denna sida är inte tillgänglig i den mediatyp du accepterat" +msgstr "Katalog med teman är inte läsbar: %s" #: actions/pathsadminpanel.php:146 #, php-format msgid "Avatar directory not writable: %s" -msgstr "" +msgstr "Katalog med avatarer är inte skrivbar: %s" #: actions/pathsadminpanel.php:152 #, php-format msgid "Background directory not writable: %s" -msgstr "" +msgstr "Katalog med bakgrunder är inte skrivbar: %s" #: actions/pathsadminpanel.php:160 #, php-format msgid "Locales directory not readable: %s" -msgstr "" +msgstr "Katalog med lokaliseringfiler (locales) är inte läsbar. %s" #: actions/pathsadminpanel.php:212 actions/siteadminpanel.php:58 #: lib/adminpanelaction.php:299 -#, fuzzy msgid "Site" -msgstr "Bjud in" +msgstr "Webbplats" #: actions/pathsadminpanel.php:216 msgid "Path" -msgstr "" +msgstr "Sökväg" #: actions/pathsadminpanel.php:216 -#, fuzzy msgid "Site path" -msgstr "Nytt inlägg" +msgstr "Sökväg till webbplats" #: actions/pathsadminpanel.php:220 msgid "Path to locales" -msgstr "" +msgstr "Sökväg till lokaliseringfiler (locales)" #: actions/pathsadminpanel.php:220 msgid "Directory path to locales" -msgstr "" +msgstr "Katalogsökväg till lokaliseringfiler (locales)" #: actions/pathsadminpanel.php:227 msgid "Theme" -msgstr "" +msgstr "Teman" #: actions/pathsadminpanel.php:232 msgid "Theme server" -msgstr "" +msgstr "Server med teman" #: actions/pathsadminpanel.php:236 msgid "Theme path" -msgstr "" +msgstr "Sökväg till teman" #: actions/pathsadminpanel.php:240 msgid "Theme directory" -msgstr "" +msgstr "Katalog med teman" #: actions/pathsadminpanel.php:247 -#, fuzzy msgid "Avatars" -msgstr "Användarbild" +msgstr "Avatarer" #: actions/pathsadminpanel.php:252 -#, fuzzy msgid "Avatar server" -msgstr "Twitter inställningar" +msgstr "Server med avatarer" #: actions/pathsadminpanel.php:256 -#, fuzzy msgid "Avatar path" -msgstr "Användarbilden uppdaterad." +msgstr "Sökväg till avatarer" #: actions/pathsadminpanel.php:260 -#, fuzzy msgid "Avatar directory" -msgstr "Användarbilden uppdaterad." +msgstr "Katalog med avatarer" #: actions/pathsadminpanel.php:269 msgid "Backgrounds" -msgstr "" +msgstr "Bakgrunder" #: actions/pathsadminpanel.php:273 msgid "Background server" -msgstr "" +msgstr "Server med bakgrunder" #: actions/pathsadminpanel.php:277 msgid "Background path" -msgstr "" +msgstr "Sökväg till bakgrunder" #: actions/pathsadminpanel.php:281 msgid "Background directory" -msgstr "" +msgstr "Katalog med bakgrunder" #: actions/pathsadminpanel.php:297 -#, fuzzy msgid "Save paths" -msgstr "Nytt inlägg" +msgstr "Spara sökvägar" #: actions/peoplesearch.php:52 #, php-format @@ -4610,11 +4529,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "Du kan uppdatera din personliga profil här" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5089,7 +5004,7 @@ msgstr "Tabort inlägg" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "Minst 6 tecken" @@ -5104,11 +5019,11 @@ msgstr "Skicka ett meddelande" msgid "What's up, %s?" msgstr "Vad är på gång, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5393,7 +5308,12 @@ msgstr "Kunde inte prenumerera på annat åt dig." msgid "Not subscribed!" msgstr "Ingen prenumerant!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Kunde inte radera prenumerationen. " + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Kunde inte radera prenumerationen. " diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index fd36953430..b9461933d5 100644 --- a/locale/te/LC_MESSAGES/statusnet.po +++ b/locale/te/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:50+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:11+0000\n" "Language-Team: Telugu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: te\n" "X-Message-Group: out-statusnet\n" @@ -182,7 +182,12 @@ msgstr "వాడుకరికి ప్రొఫైలు లేదు." msgid "Could not save profile." msgstr "ప్రొఫైలుని భద్రపరచలేకున్నాం." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "వాడుకరిని తాజాకరించలేకున్నాం." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "వాడుకరి నిరోధం విఫలమైంది." @@ -818,101 +823,101 @@ msgstr "రూపురేఖలు" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "తప్పుడు పరిమాణం." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "అలంకారం అందుబాటులో లేదు: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "చిహ్నాన్ని మార్చు" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "సైటు చిహ్నం" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "అలంకారాన్ని మార్చు" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "సైటు అలంకారం" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "సైటుకి అలంకారం." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "నేపథ్య చిత్రాన్ని మార్చు" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "నేపథ్యం" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "మీ స్వంత నేపథ్యపు చిత్రాన్ని మీరు ఎక్కించవచ్చు. గరిష్ఠ ఫైలు పరిమాణం 2మెబై." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "రంగులను మార్చు" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "విషయం" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "పక్కపట్టీ" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "పాఠ్యం" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "లంకెలు" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -922,7 +927,7 @@ msgstr "" msgid "Save" msgstr "భద్రపరచు" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "రూపురేఖలని భద్రపరచు" @@ -1346,19 +1351,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "వాడుకరిని తాజాకరించలేకున్నాం." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "అభిరుచులు భద్రమయ్యాయి." @@ -1659,7 +1664,7 @@ msgstr "వ్యక్తిగత సందేశం" msgid "Optionally add a personal message to the invitation." msgstr "ఐచ్ఛికంగా ఆహ్వానానికి వ్యక్తిగత సందేశం చేర్చండి." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "పంపించు" @@ -1949,8 +1954,8 @@ msgstr "విషయ రకం " msgid "Only " msgstr "మాత్రమే " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4394,11 +4399,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "మీ స్వంత నేపథ్యపు చిత్రాన్ని మీరు ఎక్కించవచ్చు. గరిష్ఠ ఫైలు పరిమాణం 2మెబై." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4850,7 +4851,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "అందుబాటులో ఉన్న అక్షరాలు" @@ -4864,11 +4865,11 @@ msgstr "కొత్త సందేశం" msgid "What's up, %s?" msgstr "%s, సంగతులేమిటి?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "జోడించు" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "ఒక ఫైలుని జోడించు" @@ -5145,7 +5146,12 @@ msgstr "" msgid "Not subscribed!" msgstr "చందాదార్లు" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "చందాని తొలగించలేకపోయాం." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "చందాని తొలగించలేకపోయాం." diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index bbb9c2df96..e7ae86b4e7 100644 --- a/locale/tr/LC_MESSAGES/statusnet.po +++ b/locale/tr/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:53+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:14+0000\n" "Language-Team: Turkish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: tr\n" "X-Message-Group: out-statusnet\n" @@ -183,7 +183,12 @@ msgstr "Kullanıcının profili yok." msgid "Could not save profile." msgstr "Profil kaydedilemedi." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Kullanıcı güncellenemedi." + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -836,50 +841,50 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Geçersiz büyüklük." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Bu sayfa kabul ettiğiniz ortam türünde kullanılabilir değil" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Parolayı değiştir" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Yeni durum mesajı" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Değiştir" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Yeni durum mesajı" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -887,59 +892,59 @@ msgid "" msgstr "" "Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Parolayı değiştir" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Bağlan" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Ara" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Giriş" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -949,7 +954,7 @@ msgstr "" msgid "Save" msgstr "Kaydet" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1387,19 +1392,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 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:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Tercihler kaydedildi." @@ -1716,7 +1721,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Gönder" @@ -2015,8 +2020,8 @@ msgstr "Bağlan" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4495,11 +4500,7 @@ msgid "" msgstr "" "Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4964,7 +4965,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 veya daha fazla karakter" @@ -4979,11 +4980,11 @@ msgstr "Yeni durum mesajı" msgid "What's up, %s?" msgstr "N'aber %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5263,7 +5264,12 @@ msgstr "" msgid "Not subscribed!" msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Abonelik silinemedi." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Abonelik silinemedi." diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index b3fb434654..165e56bca3 100644 --- a/locale/uk/LC_MESSAGES/statusnet.po +++ b/locale/uk/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:20:56+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:17+0000\n" "Language-Team: Ukrainian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: uk\n" "X-Message-Group: out-statusnet\n" @@ -189,7 +189,12 @@ msgstr "Користувач не має профілю." msgid "Could not save profile." msgstr "Не вдалося зберегти профіль." -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "Не можна відписатись від самого себе!" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "Спроба заблокувати користувача невдала." @@ -825,45 +830,45 @@ msgstr "Дизайн" msgid "Design settings for this StatusNet site." msgstr "Налаштування дизайну для цього сайту StatusNet." -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 msgid "Invalid logo URL." msgstr "Помилкова URL-адреса логотипу." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, php-format msgid "Theme not available: %s" msgstr "Тема не доступна: %s" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 msgid "Change logo" msgstr "Змінити логотип" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 msgid "Site logo" msgstr "Логотип сайту" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 msgid "Change theme" msgstr "Змінити тему" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 msgid "Site theme" msgstr "Тема сайту" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "Тема для цього сайту." -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "Змінити фонове зображення" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -872,55 +877,55 @@ msgstr "" "Ви можете завантажити фонове зображення для сайту. Максимальний розмір файлу " "%1$s." -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "Увімк." -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "Вимк." -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Увімкнути або вимкнути фонове зображення." -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "Замостити фон" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" msgstr "Змінити кольори" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 msgid "Content" msgstr "Зміст" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "Бічна панель" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Текст" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 msgid "Links" msgstr "Посилання" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "За замовч." -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Оновити налаштування за замовчуванням" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Повернутись до початкових налаштувань" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -930,7 +935,7 @@ msgstr "Повернутись до початкових налаштувань" msgid "Save" msgstr "Зберегти" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "Зберегти дизайн" @@ -1366,18 +1371,18 @@ msgstr "" "Налаштуйте вигляд сторінки групи, використовуючи фонове зображення і кольори " "на свій смак." -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." msgstr "Не вдалося оновити дизайн." -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "Преференції дизайну збережно." @@ -1705,7 +1710,7 @@ msgstr "Особисті повідомлення" msgid "Optionally add a personal message to the invitation." msgstr "Можна додати персональне повідомлення до запрошення (опціонально)." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Так!" @@ -2033,8 +2038,8 @@ msgstr "тип змісту " msgid "Only " msgstr "Лише " -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Такий формат даних не підтримується." @@ -2823,11 +2828,9 @@ 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; немає або помилкове " -"визначення XRDS)." +"Неправильна URL-адреса профілю (немає документа YADIS, або помилковий XRDS)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -4473,7 +4476,6 @@ msgstr[1] "Ви є учасником таких груп:" msgstr[2] "Ви є учасником таких груп:" #: lib/command.php:652 -#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4511,40 +4513,40 @@ msgid "" "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" -"fav - додати останній допис користувача до обраних\n" -"fav # - додати допис #номер до обраних\n" -"reply # - відповісти на допис #номер\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 - наразі не виконується\n" -"untrack - наразі не виконується\n" -"track off - наразі не виконується\n" -"untrack all - наразі не виконується\n" -"tracks - наразі не виконується\n" -"tracking - наразі не виконується\n" +"on — увімкнути сповіщення\n" +"off — вимкнути сповіщення\n" +"help — список команд\n" +"follow — підписатись до користувача\n" +"groups — групи, до яких Ви входите\n" +"subscriptions — користувачі, до яких Ви підписані\n" +"subscribers — користувачі, які підписані до Вас\n" +"leave — відписатись від користувача\n" +"d — надіслати особисте повідомлення\n" +"get — отримати останній допис користувача\n" +"whois — інфо про користувача\n" +"fav — додати останній допис користувача до обраних\n" +"fav # — додати допис до обраних\n" +"reply # — відповісти на допис\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 — наразі не виконується\n" +"untrack — наразі не виконується\n" +"track off — наразі не виконується\n" +"untrack all — наразі не виконується\n" +"tracks — наразі не виконується\n" +"tracking — наразі не виконується\n" #: lib/common.php:199 msgid "No configuration file found. " @@ -4589,11 +4591,7 @@ msgstr "" "Ви можете завантажити власне фонове зображення. Максимальний розмір файлу " "становить 2Мб." -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "Помилка кольорів за замовчуванням: " - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "Дизайн за замовчуванням відновлено." @@ -5128,7 +5126,7 @@ msgstr "Надіслати прямий допис" msgid "To" msgstr "До" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 msgid "Available characters" msgstr "Лишилось знаків" @@ -5141,11 +5139,11 @@ msgstr "Надіслати допис" msgid "What's up, %s?" msgstr "Що нового, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "Вкласти" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "Вкласти файл" @@ -5412,7 +5410,12 @@ msgstr "Не вдалося підписати інших до Вас." msgid "Not subscribed!" msgstr "Не підписано!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Не вдалося видалити підписку." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Не вдалося видалити підписку." diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index b77e2e8fc4..bf323467cb 100644 --- a/locale/vi/LC_MESSAGES/statusnet.po +++ b/locale/vi/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:21:00+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:19+0000\n" "Language-Team: Vietnamese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: vi\n" "X-Message-Group: out-statusnet\n" @@ -184,7 +184,12 @@ msgstr "Người dùng không có thông tin." msgid "Could not save profile." msgstr "Không thể lưu hồ sơ cá nhân." -#: actions/apiblockcreate.php:108 +#: 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:119 msgid "Block user failed." msgstr "" @@ -846,52 +851,52 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "Kích thước không hợp lệ." -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "Trang này không phải là phương tiện truyền thông mà bạn chấp nhận." -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "Thay đổi mật khẩu của bạn" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "Thư mời" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "Thay đổi" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "Thông báo mới" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 #, fuzzy msgid "Change background image" msgstr "Background Theme:" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 #, fuzzy msgid "Background" msgstr "Background Theme:" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -900,60 +905,60 @@ 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/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 #, fuzzy msgid "Tile background image" msgstr "Background Theme:" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Thay đổi mật khẩu của bạn" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Kết nối" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Tìm kiếm" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "Chuỗi bất kỳ" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Đăng nhập" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -963,7 +968,7 @@ msgstr "" msgid "Save" msgstr "Lưu" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 #, fuzzy msgid "Save design" msgstr "Lưu" @@ -1431,20 +1436,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 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:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "Không thể lưu thông tin Twitter của bạn!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "Các tính năng đã được lưu." @@ -1772,7 +1777,7 @@ msgstr "Tin nhắn cá nhân" msgid "Optionally add a personal message to the invitation." msgstr "Không bắt buộc phải thêm thông điệp vào thư mời." -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "Gửi" @@ -2106,8 +2111,8 @@ msgstr "Kết nối" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "Không hỗ trợ định dạng dữ liệu này." @@ -4664,11 +4669,7 @@ 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:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5189,7 +5190,7 @@ msgstr "Xóa tin nhắn" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "Nhiều hơn 6 ký tự" @@ -5204,11 +5205,11 @@ msgstr "Thông báo mới" msgid "What's up, %s?" msgstr "Bạn đang làm gì thế, %s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5499,7 +5500,12 @@ msgstr "Không thể tạo favorite." msgid "Not subscribed!" msgstr "Chưa đăng nhận!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "Không thể xóa đăng nhận." + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "Không thể xóa đăng nhận." diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index 2d0853339c..041b4402e9 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:21:03+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:23+0000\n" "Language-Team: Simplified Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hans\n" "X-Message-Group: out-statusnet\n" @@ -186,7 +186,12 @@ msgstr "用户没有个人信息。" msgid "Could not save profile." msgstr "无法保存个人信息。" -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "无法更新用户。" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "阻止用户失败。" @@ -842,110 +847,110 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "大小不正确。" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "这个页面不提供您想要的媒体类型" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "修改密码" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "邀请" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "修改" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "新通告" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 #, fuzzy msgid "Theme for the site." msgstr "登出本站" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "你可以给你的组上载一个logo图。" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "修改密码" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "连接" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "搜索" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "文本" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "登录" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -955,7 +960,7 @@ msgstr "" msgid "Save" msgstr "保存" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1404,20 +1409,20 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "无法更新用户。" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 #, fuzzy msgid "Unable to save your design settings!" msgstr "无法保存 Twitter 设置!" -#: actions/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." msgstr "同步选项已保存。" @@ -1731,7 +1736,7 @@ msgstr "个人消息" msgid "Optionally add a personal message to the invitation." msgstr "在邀请中加几句话(可选)。" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "发送" @@ -2048,8 +2053,8 @@ msgstr "连接" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "不支持的数据格式。" @@ -4568,11 +4573,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "您可以在这里上传个人头像。" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5048,7 +5049,7 @@ msgstr "删除通告" msgid "To" msgstr "到" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6 个或更多字符" @@ -5063,11 +5064,11 @@ msgstr "发送消息" msgid "What's up, %s?" msgstr "怎么样,%s?" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5355,7 +5356,12 @@ msgstr "无法订阅他人更新。" msgid "Not subscribed!" msgstr "未订阅!" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "无法删除订阅。" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "无法删除订阅。" diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index 17a54af33a..4325d5cde6 100644 --- a/locale/zh_TW/LC_MESSAGES/statusnet.po +++ b/locale/zh_TW/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-02 23:18+0000\n" -"PO-Revision-Date: 2009-12-02 23:21:06+0000\n" +"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"PO-Revision-Date: 2009-12-05 19:55:27+0000\n" "Language-Team: Traditional Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59683); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hant\n" "X-Message-Group: out-statusnet\n" @@ -183,7 +183,12 @@ msgstr "" msgid "Could not save profile." msgstr "無法儲存個人資料" -#: actions/apiblockcreate.php:108 +#: actions/apiblockcreate.php:105 +#, fuzzy +msgid "You cannot block yourself!" +msgstr "無法更新使用者" + +#: actions/apiblockcreate.php:119 msgid "Block user failed." msgstr "" @@ -830,108 +835,108 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:270 +#: actions/designadminpanel.php:275 #, fuzzy msgid "Invalid logo URL." msgstr "尺寸錯誤" -#: actions/designadminpanel.php:274 +#: actions/designadminpanel.php:279 #, fuzzy, php-format msgid "Theme not available: %s" msgstr "個人首頁位址錯誤" -#: actions/designadminpanel.php:370 +#: actions/designadminpanel.php:375 #, fuzzy msgid "Change logo" msgstr "更改密碼" -#: actions/designadminpanel.php:375 +#: actions/designadminpanel.php:380 #, fuzzy msgid "Site logo" msgstr "新訊息" -#: actions/designadminpanel.php:382 +#: actions/designadminpanel.php:387 #, fuzzy msgid "Change theme" msgstr "更改" -#: actions/designadminpanel.php:399 +#: actions/designadminpanel.php:404 #, fuzzy msgid "Site theme" msgstr "新訊息" -#: actions/designadminpanel.php:400 +#: actions/designadminpanel.php:405 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:412 lib/designsettings.php:101 +#: actions/designadminpanel.php:417 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:417 actions/designadminpanel.php:492 +#: actions/designadminpanel.php:422 actions/designadminpanel.php:497 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:422 +#: actions/designadminpanel.php:427 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -#: actions/designadminpanel.php:452 lib/designsettings.php:139 +#: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" msgstr "" -#: actions/designadminpanel.php:468 lib/designsettings.php:155 +#: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:469 lib/designsettings.php:156 +#: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:474 lib/designsettings.php:161 +#: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:483 lib/designsettings.php:170 +#: actions/designadminpanel.php:488 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "更改密碼" -#: actions/designadminpanel.php:505 lib/designsettings.php:191 +#: actions/designadminpanel.php:510 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "連結" -#: actions/designadminpanel.php:518 lib/designsettings.php:204 +#: actions/designadminpanel.php:523 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:531 lib/designsettings.php:217 +#: actions/designadminpanel.php:536 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:544 lib/designsettings.php:230 +#: actions/designadminpanel.php:549 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "登入" -#: actions/designadminpanel.php:572 lib/designsettings.php:247 +#: actions/designadminpanel.php:577 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:573 lib/designsettings.php:248 +#: actions/designadminpanel.php:578 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:579 lib/designsettings.php:254 +#: actions/designadminpanel.php:584 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" -#: actions/designadminpanel.php:581 actions/emailsettings.php:195 +#: actions/designadminpanel.php:586 actions/emailsettings.php:195 #: actions/imsettings.php:163 actions/othersettings.php:126 #: actions/pathsadminpanel.php:296 actions/profilesettings.php:167 #: actions/siteadminpanel.php:421 actions/smssettings.php:181 @@ -941,7 +946,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:582 lib/designsettings.php:257 +#: actions/designadminpanel.php:587 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1375,19 +1380,19 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:262 actions/userdesignsettings.php:186 -#: lib/designsettings.php:434 lib/designsettings.php:464 +#: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 #, fuzzy msgid "Couldn't update your design." msgstr "無法更新使用者" -#: actions/groupdesignsettings.php:286 actions/groupdesignsettings.php:296 +#: actions/groupdesignsettings.php:287 actions/groupdesignsettings.php:297 #: 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/groupdesignsettings.php:307 actions/userdesignsettings.php:231 +#: actions/groupdesignsettings.php:308 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" @@ -1691,7 +1696,7 @@ msgstr "" msgid "Optionally add a personal message to the invitation." msgstr "" -#: actions/invite.php:197 lib/messageform.php:181 lib/noticeform.php:225 +#: actions/invite.php:197 lib/messageform.php:180 lib/noticeform.php:224 msgid "Send" msgstr "" @@ -1977,8 +1982,8 @@ msgstr "連結" msgid "Only " msgstr "" -#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:999 -#: lib/api.php:1027 lib/api.php:1137 +#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 +#: lib/api.php:1024 lib/api.php:1134 msgid "Not a supported data format." msgstr "" @@ -4410,11 +4415,7 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" -#: lib/designsettings.php:372 -msgid "Bad default color settings: " -msgstr "" - -#: lib/designsettings.php:468 +#: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -4875,7 +4876,7 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:162 lib/noticeform.php:186 +#: lib/messageform.php:161 lib/noticeform.php:185 #, fuzzy msgid "Available characters" msgstr "6個以上字元" @@ -4890,11 +4891,11 @@ msgstr "新訊息" msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:193 +#: lib/noticeform.php:192 msgid "Attach" msgstr "" -#: lib/noticeform.php:197 +#: lib/noticeform.php:196 msgid "Attach a file" msgstr "" @@ -5169,7 +5170,12 @@ msgstr "" msgid "Not subscribed!" msgstr "此帳號已註冊" -#: lib/subs.php:140 +#: lib/subs.php:133 +#, fuzzy +msgid "Couldn't delete self-subscription." +msgstr "無法刪除帳號" + +#: lib/subs.php:146 msgid "Couldn't delete subscription." msgstr "無法刪除帳號" From a555963f979a26e1276e28b56f2cab048155d7fd Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Sat, 5 Dec 2009 23:12:56 +0000 Subject: [PATCH 39/70] Preliminary UI for Play/Pause behaviour on hover state for notices --- plugins/Realtime/realtimeupdate.js | 57 +++++++++++++++++++----------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index ce0297339d..a760158b02 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -191,13 +191,13 @@ RealtimeUpdate = { initActions: function(url, timeline, path) { - var NP = $('#notices_primary'); - NP.prepend('
    '); + $('#notices_primary').prepend('
    '); RealtimeUpdate._pluginPath = path; RealtimeUpdate.initPlayPause(); RealtimeUpdate.initAddPopup(url, timeline, RealtimeUpdate._pluginPath); + RealtimeUpdate.addNoticesHover(); }, initPlayPause: function() @@ -207,14 +207,14 @@ RealtimeUpdate = { showPause: function() { - RT_PP = $('#realtime_playpause'); - RT_PP.empty(); - RT_PP.append(''); + RealtimeUpdate._paused = false; + RealtimeUpdate.showQueuedNotices(); - RT_P = $('#realtime_pause'); - RT_P.bind('click', function() { - RealtimeUpdate._paused = true; + $('#realtime_playpause').remove(); + $('#realtime_actions').prepend('
  • '); + $('#realtime_pause').bind('click', function() { + RealtimeUpdate.removeNoticesHover(); RealtimeUpdate.showPlay(); return false; }); @@ -222,18 +222,14 @@ RealtimeUpdate = { showPlay: function() { - RT_PP = $('#realtime_playpause'); - RT_PP.empty(); - RT_PP.append(' '); + RealtimeUpdate._paused = true; - RT_P = $('#realtime_play'); - RT_P.bind('click', function() { - RealtimeUpdate._paused = false; + $('#realtime_playpause').remove(); + $('#realtime_actions').prepend('
  • '); + $('#realtime_play').bind('click', function() { + RealtimeUpdate.addNoticesHover(); RealtimeUpdate.showPause(); - - RealtimeUpdate.showQueuedNotices(); - return false; }); }, @@ -259,13 +255,32 @@ RealtimeUpdate = { $('#realtime_playpause #queued_counter').empty(); }, + addNoticesHover: function() + { + $('#notices_primary .notices').hover( + function() { + if (RealtimeUpdate._paused === false) { + RealtimeUpdate.showPlay(); + } + }, + function() { + if (RealtimeUpdate._paused === true) { + RealtimeUpdate.showPause(); + } + } + ); + }, + + removeNoticesHover: function() + { + $('#notices_primary .notices').unbind('hover'); + }, + initAddPopup: function(url, timeline, path) { - var NP = $('#realtime_timeline'); - NP.append(''); + $('#realtime_timeline').append(''); - var PP = $('#realtime_popup'); - PP.bind('click', function() { + $('#realtime_popup').bind('click', function() { window.open(url, '', 'toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550'); From 75cac0fd6b94f77ec8ff32ebc89ec513ee102831 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 21:03:27 -0500 Subject: [PATCH 40/70] Added 'login' command that gives you a link that can be used to login to the website --- actions/login.php | 9 +++----- classes/Login_token.php | 42 ++++++++++++++++++++++++++++++++++++++ classes/statusnet.ini | 1 + db/08to09.sql | 11 +++++++++- db/08to09_pg.sql | 10 ++++++++- db/statusnet.sql | 10 +++++++++ db/statusnet_pg.sql | 12 ++++++++++- lib/command.php | 27 ++++++++++++++++++++++++ lib/commandinterpreter.php | 6 ++++++ lib/router.php | 2 ++ 10 files changed, 121 insertions(+), 9 deletions(-) create mode 100644 classes/Login_token.php diff --git a/actions/login.php b/actions/login.php index cd13268134..cee29fd09e 100644 --- a/actions/login.php +++ b/actions/login.php @@ -79,6 +79,8 @@ class LoginAction extends Action $this->clientError(_('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->checkLogin(); + } else if (isset($args['user_id']) && isset($args['token'])){ + $this->checkLogin($args['user_id'],$args['token']); } else { common_ensure_session(); $this->showForm(); @@ -95,7 +97,7 @@ class LoginAction extends Action * @return void */ - function checkLogin() + function checkLogin($user_id=null, $token=null) { if(isset($token) && isset($user_id)){ //Token based login (from the LoginCommand) @@ -137,11 +139,6 @@ class LoginAction extends Action $user = common_check_user($nickname, $password); } - $nickname = common_canonical_nickname($this->trimmed('nickname')); - $password = $this->arg('password'); - - $user = common_check_user($nickname, $password); - if (!$user) { $this->showForm(_('Incorrect username or password.')); return; diff --git a/classes/Login_token.php b/classes/Login_token.php new file mode 100644 index 0000000000..c172b30abc --- /dev/null +++ b/classes/Login_token.php @@ -0,0 +1,42 @@ +. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Login_token extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'login_token'; // table name + public $user_id; // int(4) primary_key not_null + public $token; // char(32) not_null + public $created; // datetime() not_null + public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP + + /* Static get */ + function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Login_token',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE +} diff --git a/classes/statusnet.ini b/classes/statusnet.ini index 835faeb0b4..253f458798 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -260,6 +260,7 @@ modified = 384 [login_token__keys] user_id = K +token = K [message] id = 129 diff --git a/db/08to09.sql b/db/08to09.sql index 8d463fab4c..64640f4ced 100644 --- a/db/08to09.sql +++ b/db/08to09.sql @@ -72,4 +72,13 @@ create table location_namespace ( created datetime not null comment 'date the record was created', modified timestamp comment 'date this record was modified' -) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; \ No newline at end of file +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + +create table login_token ( + user_id integer not null comment 'user owning this token' references user (id), + token char(32) not null comment 'token useable for logging in', + created datetime not null comment 'date this record was created', + modified timestamp comment 'date this record was modified', + + constraint primary key (user_id) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; diff --git a/db/08to09_pg.sql b/db/08to09_pg.sql index b312d47dd8..0bd47dea56 100644 --- a/db/08to09_pg.sql +++ b/db/08to09_pg.sql @@ -39,6 +39,15 @@ create table profile_role ( ); +create table login_token ( + user_id integer not null /* comment 'user owning this token'*/ references "user" (id), + token char(32) not null /* comment 'token useable for logging in'*/, + 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) +); + DROP index fave_user_id_idx; CREATE index fave_user_id_idx on fave (user_id,modified); @@ -60,4 +69,3 @@ ALTER TABLE profile ADD COLUMN lat decimal(10,7) /*comment 'latitude'*/ ; 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'*/; - \ No newline at end of file diff --git a/db/statusnet.sql b/db/statusnet.sql index f7b3b113b4..18abcdfdb2 100644 --- a/db/statusnet.sql +++ b/db/statusnet.sql @@ -575,3 +575,13 @@ create table location_namespace ( modified timestamp comment 'date this record was modified' ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + +create table login_token ( + user_id integer not null comment 'user owning this token' references user (id), + token char(32) not null comment 'token useable for logging in', + created datetime not null comment 'date this record was created', + modified timestamp comment 'date this record was modified', + + constraint primary key (user_id) +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + diff --git a/db/statusnet_pg.sql b/db/statusnet_pg.sql index cd72d66eab..81b329d1e5 100644 --- a/db/statusnet_pg.sql +++ b/db/statusnet_pg.sql @@ -570,4 +570,14 @@ create table profile_role ( primary key (profile_id, role) -); \ No newline at end of file +); + +create table login_token ( + user_id integer not null /* comment 'user owning this token'*/ references "user" (id), + token char(32) not null /* comment 'token useable for logging in'*/, + 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) +); + diff --git a/lib/command.php b/lib/command.php index bcc551c817..7e98156b66 100644 --- a/lib/command.php +++ b/lib/command.php @@ -579,6 +579,32 @@ class OnCommand extends Command } } +class LoginCommand extends Command +{ + function execute($channel) + { + $login_token = Login_token::staticGet('user_id',$this->user->id); + if($login_token){ + $login_token->delete(); + } + $login_token = new Login_token(); + $login_token->user_id = $this->user->id; + $login_token->token = common_good_rand(16); + $login_token->created = common_sql_now(); + $result = $login_token->insert(); + if (!$result) { + common_log_db_error($login_token, 'INSERT', __FILE__); + $channel->error($this->user, sprintf(_('Could not create login token for %s'), + $this->user->nickname)); + return; + } + $channel->output($this->user, + sprintf(_('This link is useable only once, and is good for only 2 minutes: %s'), + common_local_url('login', + array('user_id'=>$login_token->user_id, 'token'=>$login_token->token)))); + } +} + class SubscriptionsCommand extends Command { function execute($channel) @@ -666,6 +692,7 @@ class HelpCommand extends Command "reply # - reply to notice with a given id\n". "reply - reply to the last notice from user\n". "join - join group\n". + "login - Get a link to login to the web interface\n". "drop - leave group\n". "stats - get your stats\n". "stop - same as 'off'\n". diff --git a/lib/commandinterpreter.php b/lib/commandinterpreter.php index 25f2e4b3eb..665015afcc 100644 --- a/lib/commandinterpreter.php +++ b/lib/commandinterpreter.php @@ -41,6 +41,12 @@ class CommandInterpreter return null; } return new HelpCommand($user); + case 'login': + if ($arg) { + return null; + } else { + return new LoginCommand($user); + } case 'subscribers': if ($arg) { return null; diff --git a/lib/router.php b/lib/router.php index 1a090861e4..37525319f7 100644 --- a/lib/router.php +++ b/lib/router.php @@ -88,6 +88,8 @@ class Router $m->connect('doc/:title', array('action' => 'doc')); + $m->connect('main/login?user_id=:user_id&token=:token', array('action'=>'login'), array('user_id'=> '[0-9]+', 'token'=>'.+')); + // main stuff is repetitive $main = array('login', 'logout', 'register', 'subscribe', From 3b14b61fa745d4906796ac49e78ae712f61e9643 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sat, 5 Dec 2009 21:04:20 -0500 Subject: [PATCH 41/70] Add a configuration option to disable the login command. $config['logincommand']['disabled'] = true; This commit should be reverted once the command has been sufficiently tested and trusted. --- actions/login.php | 5 ++++- lib/command.php | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/actions/login.php b/actions/login.php index cee29fd09e..a6f86c0ca1 100644 --- a/actions/login.php +++ b/actions/login.php @@ -75,11 +75,14 @@ class LoginAction extends Action function handle($args) { parent::handle($args); + + $disabled = common_config('logincommand','disabled'); + if (common_is_real_login()) { $this->clientError(_('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->checkLogin(); - } else if (isset($args['user_id']) && isset($args['token'])){ + } else if (!isset($disabled) && isset($args['user_id']) && isset($args['token'])){ $this->checkLogin($args['user_id'],$args['token']); } else { common_ensure_session(); diff --git a/lib/command.php b/lib/command.php index 7e98156b66..e2a6655111 100644 --- a/lib/command.php +++ b/lib/command.php @@ -583,6 +583,11 @@ class LoginCommand extends Command { function execute($channel) { + $disabled = common_config('logincommand','disabled'); + if(isset($disabled)) { + $channel->error($this->user, _('Login command is disabled')); + return; + } $login_token = Login_token::staticGet('user_id',$this->user->id); if($login_token){ $login_token->delete(); From 49005881bd31a022e59574277866aada41e4b76d Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Sun, 6 Dec 2009 22:07:49 +0000 Subject: [PATCH 42/70] Minor fix for play/pause mouseleave --- plugins/Realtime/realtimeupdate.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index a760158b02..577499bf7f 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -197,7 +197,6 @@ RealtimeUpdate = { RealtimeUpdate.initPlayPause(); RealtimeUpdate.initAddPopup(url, timeline, RealtimeUpdate._pluginPath); - RealtimeUpdate.addNoticesHover(); }, initPlayPause: function() @@ -209,6 +208,7 @@ RealtimeUpdate = { { RealtimeUpdate._paused = false; RealtimeUpdate.showQueuedNotices(); + RealtimeUpdate.addNoticesHover(); $('#realtime_playpause').remove(); $('#realtime_actions').prepend('
  • '); @@ -228,7 +228,6 @@ RealtimeUpdate = { $('#realtime_actions').prepend('
  • '); $('#realtime_play').bind('click', function() { - RealtimeUpdate.addNoticesHover(); RealtimeUpdate.showPause(); return false; }); @@ -273,7 +272,7 @@ RealtimeUpdate = { removeNoticesHover: function() { - $('#notices_primary .notices').unbind('hover'); + $('#notices_primary .notices').unbind(); }, initAddPopup: function(url, timeline, path) From af0f905e2487bd00a0c888f1ddc704fb8ce44731 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 09:55:12 +0000 Subject: [PATCH 43/70] If the XHR error suggests that the xhr.status is 0 (i.e., it didn't receive an XHR object as expected), threat it as a success like HTTP 20x or 30x because the notice most likely went through. jquery.form.js (for file uploads) and meteor.js both use an iframe and they (somehow) appear to be in conflict. Notice always goes through, however, xhr.status is 0. Further investigation is needed. --- js/util.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/util.js b/js/util.js index 73fcf37bee..259d566596 100644 --- a/js/util.js +++ b/js/util.js @@ -192,12 +192,13 @@ var SN = { // StatusNet form.append(document._importNode($('.'+SN.C.S.Error, xhr.responseXML)[0], true)); } else { - if(jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) < 0) { - form.append('

    (Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.

    '); } } } From c9b6a90c99691089e8552fb3094e6432766233ed Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 10:08:07 +0000 Subject: [PATCH 44/70] Use .resetForm() instead of manually setting notice form's control values to null --- js/util.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/js/util.js b/js/util.js index 259d566596..c6e546bd0e 100644 --- a/js/util.js +++ b/js/util.js @@ -249,9 +249,7 @@ var SN = { // StatusNet form.append('

    '+result_title+'

    '); } } - $('#'+form_id+' #'+SN.C.S.NoticeDataText).val(''); - $('#'+form_id+' #'+SN.C.S.NoticeDataAttach).val(''); - $('#'+form_id+' #'+SN.C.S.NoticeInReplyTo).val(''); + $('#'+form_id).resetForm(); $('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove(); SN.U.FormNoticeEnhancements($('#'+form_id)); } From 5a55b5a3ce2247ae37bad840a797b00748732f47 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 10:10:17 +0000 Subject: [PATCH 45/70] Fixed missing " for element attribute --- js/util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/util.js b/js/util.js index c6e546bd0e..972c97d12d 100644 --- a/js/util.js +++ b/js/util.js @@ -185,7 +185,7 @@ var SN = { // StatusNet $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled); if (textStatus == 'timeout') { - form.append('

    Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.

    '); } else { if ($('.'+SN.C.S.Error, xhr.responseXML).length > 0) { @@ -198,7 +198,7 @@ var SN = { // StatusNet SN.U.FormNoticeEnhancements($('#'+form_id)); } else { - form.append('

    (Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.

    '); } } } From c4f329ed54dbaca99fe1589f0c8d715e875743e5 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 10:26:29 +0000 Subject: [PATCH 46/70] Added form_response class to XHR notice posts --- js/util.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/js/util.js b/js/util.js index 972c97d12d..ed6a781f74 100644 --- a/js/util.js +++ b/js/util.js @@ -184,8 +184,9 @@ var SN = { // StatusNet form.removeClass(SN.C.S.Processing); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled); $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled); + $('#'+form_id+' .form_response').remove(); if (textStatus == 'timeout') { - form.append('

    Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.

    '); + form.append('

    Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.

    '); } else { if ($('.'+SN.C.S.Error, xhr.responseXML).length > 0) { @@ -198,17 +199,18 @@ var SN = { // StatusNet SN.U.FormNoticeEnhancements($('#'+form_id)); } else { - form.append('

    (Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.

    '); + form.append('

    (Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.

    '); } } } }, success: function(data, textStatus) { + $('#'+form_id+' .form_response').remove(); var result; if ($('#'+SN.C.S.Error, data).length > 0) { result = document._importNode($('p', data)[0], true); result = result.textContent || result.innerHTML; - form.append('

    '+result+'

    '); + form.append('

    '+result+'

    '); } else { if($('body')[0].id == 'bookmarklet') { @@ -218,7 +220,7 @@ var SN = { // StatusNet if ($('#'+SN.C.S.CommandResult, data).length > 0) { result = document._importNode($('p', data)[0], true); result = result.textContent || result.innerHTML; - form.append('

    '+result+'

    '); + form.append('

    '+result+'

    '); } else { var notices = $('#notices_primary .notices'); @@ -246,7 +248,7 @@ var SN = { // StatusNet else { result = document._importNode($('title', data)[0], true); result_title = result.textContent || result.innerHTML; - form.append('

    '+result_title+'

    '); + form.append('

    '+result_title+'

    '); } } $('#'+form_id).resetForm(); From 189296c5a0130c151bed5e96367bcf33e7ac1b2f Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 11:44:43 +0000 Subject: [PATCH 47/70] Using localStorage to keep the play/pause state of RealtimeUpdate --- plugins/Realtime/realtimeupdate.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 577499bf7f..13b7235892 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -201,12 +201,19 @@ RealtimeUpdate = { initPlayPause: function() { - RealtimeUpdate.showPause(); + if (typeof(localStorage) != 'undefined') { + if (localStorage.getItem('RealtimeUpdate_paused') === 'true') { + RealtimeUpdate.showPlay(); + } + else { + RealtimeUpdate.showPause(); + } + } }, showPause: function() { - RealtimeUpdate._paused = false; + RealtimeUpdate.setPause(false); RealtimeUpdate.showQueuedNotices(); RealtimeUpdate.addNoticesHover(); @@ -222,8 +229,7 @@ RealtimeUpdate = { showPlay: function() { - RealtimeUpdate._paused = true; - + RealtimeUpdate.setPause(true); $('#realtime_playpause').remove(); $('#realtime_actions').prepend('
  • '); @@ -233,6 +239,14 @@ RealtimeUpdate = { }); }, + setPause: function(state) + { + RealtimeUpdate._paused = state; + if (typeof(localStorage) != 'undefined') { + localStorage.setItem('RealtimeUpdate_paused', RealtimeUpdate._paused); + } + }, + showQueuedNotices: function() { $.each(RealtimeUpdate._queuedNotices, function(i, n) { From 11dab47e2d91c7f88819a1576609d7ef7f63ee64 Mon Sep 17 00:00:00 2001 From: Sarven Capadisli Date: Mon, 7 Dec 2009 12:12:32 +0000 Subject: [PATCH 48/70] If localStorage is not supported, showPause as usual --- plugins/Realtime/realtimeupdate.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 13b7235892..56a52433f4 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -201,7 +201,10 @@ RealtimeUpdate = { initPlayPause: function() { - if (typeof(localStorage) != 'undefined') { + if (typeof(localStorage) == 'undefined') { + RealtimeUpdate.showPause(); + } + else { if (localStorage.getItem('RealtimeUpdate_paused') === 'true') { RealtimeUpdate.showPlay(); } From 0c955b7c88b41fa28d079eb639abb748583ab4eb Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 7 Dec 2009 12:13:42 -0500 Subject: [PATCH 49/70] remove unit tests for minify --- .../min_unit_tests/HTTP_ConditionalGet/2.php | 44 - .../min_unit_tests/HTTP_ConditionalGet/3.php | 40 - .../min_unit_tests/HTTP_ConditionalGet/4.php | 49 - .../min_unit_tests/HTTP_ConditionalGet/5.php | 27 - .../HTTP_ConditionalGet/_include.php | 64 - .../HTTP_ConditionalGet/index.php | 36 - .../min_unit_tests/HTTP_Encoder/green.png | Bin 202 -> 0 bytes .../min_unit_tests/HTTP_Encoder/index.php | 60 - .../extlib/minify/min_unit_tests/_inc.php | 50 - .../_test_files/css/comments.css | 9 - .../_test_files/css/comments.min.css | 3 - .../min_unit_tests/_test_files/css/hacks.css | 66 - .../_test_files/css/hacks.min.css | 4 - .../_test_files/css/issue62.css | 890 ----- .../_test_files/css/issue62.min.css | 25 - .../_test_files/css/paths_prepend.css | 12 - .../_test_files/css/paths_prepend.min.css | 1 - .../_test_files/css/paths_rewrite.css | 14 - .../_test_files/css/paths_rewrite.min.css | 1 - .../min_unit_tests/_test_files/css/readme.txt | 1 - .../_test_files/css/selectors.css | 42 - .../_test_files/css/selectors.min.css | 37 - .../min_unit_tests/_test_files/css/styles.css | 31 - .../_test_files/css/styles.min.css | 3 - .../_test_files/css/subsilver.css | 434 --- .../_test_files/css/subsilver.min.css | 18 - .../_test_files/css/unusual_strings.css | 10 - .../_test_files/css/unusual_strings.min.css | 2 - .../_test_files/css/vladmirated.css | 658 ---- .../_test_files/css/vladmirated.min.css | 79 - .../_test_files/css_uriRewriter/exp.css | 14 - .../_test_files/css_uriRewriter/in.css | 14 - .../_test_files/html/before.html | 96 - .../_test_files/html/before.min.html | 36 - .../_test_files/html/before2.html | 95 - .../_test_files/html/before2.min.html | 36 - .../importProcessor/1/adjacent.css | 3 - .../_test_files/importProcessor/1/tv.css | 4 - .../_test_files/importProcessor/adjacent.css | 4 - .../_test_files/importProcessor/input.css | 4 - .../_test_files/importProcessor/output.css | 48 - .../min_unit_tests/_test_files/js/before.js | 57 - .../_test_files/js/before.min.js | 22 - .../_test_files/js/before.min_plus.js | 22 - .../min_unit_tests/_test_files/js/condcomm.js | 14 - .../_test_files/js/condcomm.min_plus.js | 13 - .../min_unit_tests/_test_files/js/issue74.js | 4 - .../_test_files/js/issue74.min.js | 1 - .../_test_files/js/issue74.min_plus.js | 1 - .../_test_files/js/jquery-1.2.3.js | 3408 ----------------- .../_test_files/minify/QueryString.js | 168 - .../_test_files/minify/email.js | 24 - .../_test_files/minify/issue73_1.js | 2 - .../_test_files/minify/issue73_2.js | 3 - .../_test_files/minify/issue89_1.css | 7 - .../_test_files/minify/issue89_2.css | 7 - .../_test_files/minify/issue89_out.min.css | 1 - .../_test_files/minify/lines_bugs.js | 2 - .../_test_files/minify/lines_output.js | 280 -- .../_test_files/minify/minified.css | 5 - .../_test_files/minify/minified.js | 12 - .../test_HTTP_ConditionalGet.php | 137 - .../min_unit_tests/test_HTTP_Encoder.php | 260 -- .../minify/min_unit_tests/test_JSMin.php | 63 - .../minify/min_unit_tests/test_JSMinPlus.php | 80 - .../minify/min_unit_tests/test_Minify.php | 213 -- .../min_unit_tests/test_Minify_Build.php | 36 - .../minify/min_unit_tests/test_Minify_CSS.php | 53 - .../test_Minify_CSS_UriRewriter.php | 56 - .../min_unit_tests/test_Minify_Cache_APC.php | 33 - .../min_unit_tests/test_Minify_Cache_File.php | 54 - .../test_Minify_Cache_Memcache.php | 38 - .../test_Minify_CommentPreserver.php | 37 - .../min_unit_tests/test_Minify_HTML.php | 59 - .../test_Minify_ImportProcessor.php | 48 - .../min_unit_tests/test_Minify_Lines.php | 36 - .../extlib/minify/min_unit_tests/test_all.php | 17 - .../min_unit_tests/test_environment.php | 100 - .../min_unit_tests/test_js_in_browser.html | 4 - 79 files changed, 8441 deletions(-) delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/index.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/index.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_inc.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/QueryString.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/email.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_1.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue73_2.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_1.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_2.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/issue89_out.min.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_bugs.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/lines_output.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.css delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/_test_files/minify/minified.js delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_ConditionalGet.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_HTTP_Encoder.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMin.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_JSMinPlus.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Build.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CSS_UriRewriter.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_APC.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_File.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Cache_Memcache.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_CommentPreserver.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_HTML.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_ImportProcessor.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_Minify_Lines.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_all.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_environment.php delete mode 100644 plugins/Minify/extlib/minify/min_unit_tests/test_js_in_browser.html diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php deleted file mode 100644 index 9b66f24932..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/2.php +++ /dev/null @@ -1,44 +0,0 @@ - $lastModified -)); -if ($cg->cacheIsValid) { - $cg->sendHeaders(); - // we're done - exit(); -} - -// generate content -$title = 'Last-Modified is known : add Content-Length'; -$explain = ' -

    Here, like the first example, we know the Last-Modified time, -but we also want to set the Content-Length to increase cacheability and allow -HTTP persistent connections. Instead of sending headers immediately, we first -generate our content, then use setContentLength(strlen($content)) -to add the header. Then finally call sendHeaders() and send the -content.

    -

    Note: This is not required if your PHP config buffers all -output and your script doesn\'t do any incremental flushing of the output -buffer. PHP will generally set Content-Length for you if it can.

    -

    This script emulates a document that changes every ' .$every. ' seconds. -
    This is version: ' . date('r', $lastModified) . '

    -'; - -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$cg->setContentLength(strlen($content)); -$cg->sendHeaders(); -send_slowly($content); - diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php deleted file mode 100644 index 8f5482ba89..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php +++ /dev/null @@ -1,40 +0,0 @@ -When Last-Modified is unknown, you can still use ETags, but you need a short -string that is unique for that content. In the worst case, you have to generate -all the content first, then instantiate HTTP_ConditionalGet, setting -the array key contentHash to the output of a hash function of the -content. Since we have the full content, we might as well also use -setContentLength(strlen($content)) in the case where we need to -send it.

    -

    This script emulates a document that changes every ' .$every. ' seconds. -
    This is version: ' . date('r', $lastModified) . '

    -'; -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$cg = new HTTP_ConditionalGet(array( - 'contentHash' => substr(md5($content), 7) -)); -if ($cg->cacheIsValid) { - $cg->sendHeaders(); - // we're done - exit(); -} -$cg->setContentLength(strlen($content)); -$cg->sendHeaders(); - -send_slowly($content); - diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php deleted file mode 100644 index 4b77d2084b..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/4.php +++ /dev/null @@ -1,49 +0,0 @@ - $lastModified - ,'encoding' => $enc -)); -$cg->sendHeaders(); -if ($cg->cacheIsValid) { - // we're done - exit(); -} - -// output encoded content - -$title = 'ConditionalGet + Encoder'; -$explain = ' -

    Using ConditionalGet and Encoder is straightforward. First impliment the -ConditionalGet, then if the cache is not valid, encode and send the content

    -

    This script emulates a document that changes every ' .$every. ' seconds. -
    This is version: ' . date('r', $lastModified) . '

    -'; -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$he = new HTTP_Encoder(array( - 'content' => get_content(array( - 'title' => $title - ,'explain' => $explain - )) -)); -$he->encode(); - -// usually you would just $he->sendAll(), but here we want to emulate slow -// connection -$he->sendHeaders(); -send_slowly($he->getContent()); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php deleted file mode 100644 index b443c19734..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/5.php +++ /dev/null @@ -1,27 +0,0 @@ - 20 - ,'lastModifiedTime' => filemtime(__FILE__) -)); -$cg->sendHeaders(); - -// generate, send content -$title = 'Last-Modified + Expires'; -$explain = ' -

    Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser -will consider this document fresh for 20 seconds, then revalidate its cache. After -the 304 response, the cache will be good for another 20 seconds. Unless you force -a reload, there will only be 304 responses for this page after the initial download. -'; - -require '_include.php'; -echo get_content(array( - 'title' => $title - ,'explain' => $explain -)); - diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php deleted file mode 100644 index 9b65ae12e4..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/_include.php +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -HTTP_ConditionalGet : <?php echo $data['title']; ?> - - -

    HTTP_ConditionalGet

    -

    - - -

    Notes

    -

    How to distinguish 200 and 304 responses

    -

    For these pages all 200 responses are sent in chunks a second apart, so you -should notice that 304 responses are quicker. You can also use HTTP sniffers -like Fiddler (win) and -LiveHTTPHeaders (Firefox add-on) -to verify headers and content being sent.

    -

    Browser notes

    -
    -
    Opera
    -
    Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5) - prevents the ETag/If-Modified-Since headers from being sent; it only sends - them when following a link or bookmark. Also, Opera will not honor the - must-revalidate Cache-Control value unless max-age - is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0 - (if one is not already set).
    -
    Safari
    -
    ETag validation is unsupported, but Safari supports HTTP/1.0 validation via - If-Modified-Since headers as long as the cache is explicitly marked - "public" or "private" ("private" is default in ConditionalGet).
    -
    - - - $lastModified -)); -$cg->sendHeaders(); -if ($cg->cacheIsValid) { - // we're done - exit(); -} - -$title = 'Last-Modified is known : simple usage'; -$explain = ' -

    If your content has not changed since a certain timestamp, set this via the -the lastModifiedTime array key when instantiating HTTP_ConditionalGet. -You can immediately call the method sendHeaders() to set the -Last-Modified, ETag, and Cache-Control headers. The, if cacheIsValid -property is false, you echo the content.

    -

    This script emulates a document that changes every ' .$every. ' seconds. -
    This is version: ' . date('r', $lastModified) . '

    -'; - -require '_include.php'; - -echo send_slowly(get_content(array( - 'title' => $title - ,'explain' => $explain -))); - diff --git a/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png b/plugins/Minify/extlib/minify/min_unit_tests/HTTP_Encoder/green.png deleted file mode 100644 index d9d3a308aec0e9c7be676a8bc5438e5c61427ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_{3?x-PN__%S%*9TgAsieWw;%dH0CL#^d_r6q z{xkglf9682r8`iBv%n*=n1O-o0|+xZtudJa6cj6QjVN(0N=+=u%+FH@$;?efo0^iDsNj}alv - - - -HTTP_Encoder Test - - - -

    HTTP_Encoder test

    -

    HTML

    -

    CSS

    -

    Javascript

    -

    image

    - - - - $content - ,'type' => $type -)); -$he->encode(); -$he->sendAll(); - -?> \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_inc.php b/plugins/Minify/extlib/minify/min_unit_tests/_inc.php deleted file mode 100644 index bf416d4bb9..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_inc.php +++ /dev/null @@ -1,50 +0,0 @@ -0, 'fail'=>0, 'total'=>0); - - $mode = $test ? 'pass' : 'fail'; - $outMode = $test ? 'PASS' : '!FAIL'; - printf("%s: %s (%d of %d tests run so far have %sed)\n", - $outMode, $message, ++$count[$mode], ++$count['total'], $mode); - - return (bool)$test; -} - -ob_start(); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css deleted file mode 100644 index 2ef9fac498..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.css +++ /dev/null @@ -1,9 +0,0 @@ - -/* block comments get removed */ - -/*! YUI Compressor style comments are preserved */ - -/* but all other comments are removed */ - -/* comments that have any surrounding whitespace are replaced by a single space. */ -body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; } diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css deleted file mode 100644 index 3ea5c61a69..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/comments.min.css +++ /dev/null @@ -1,3 +0,0 @@ - -/* YUI Compressor style comments are preserved */ -body{background:#fff url(/path/to/image.gif) repeat-y} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css deleted file mode 100644 index fccd32166f..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.css +++ /dev/null @@ -1,66 +0,0 @@ -/* hide from ie5/mac \*/ a{} -.foo {color:red} -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/* feed to ie5/mac \*//*/ -@import "ie5mac.css"; -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/*/ hide from nav4 */ -.foo {display:block;} -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/*/ feed to nav *//*/ -.foo {display:crazy;} -/* necessary comment */ - -/* hide props from various IE/win */ -div { - width: 140px; - width/* */:/**/100px; - width: /**/100px; -} - -html>/**/body {} - -/* Tantek's box model hack */ -div { - width:400px; - voice-family: "\"}\""; - voice-family:inherit; - width:300px; -} - -/* don't minimize hex colors in filters */ -div { - filter:chroma(color=#aabbcc); - filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000); -} - -@media screen { - /* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/ - * html div#page { - height: 1%; - } - /**/ /* end hidden from IE 5 Mac */ -} - -foo { /* filters for IE */ - _height : 20px; - *height : 15px; -} - -/* http://tantek.com/CSS/Examples/midpass.html */ -@media tty { - i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";} -}/* */ - -/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */ -p:first-letter {color:red;} -p:first-line {color:red;} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css deleted file mode 100644 index 68be2ee89e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/hacks.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media -screen{/*\*/* html -div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media -tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css deleted file mode 100644 index 006c7a22fb..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.css +++ /dev/null @@ -1,890 +0,0 @@ -/* -* DEFINITION DES STYLES DE TEXTE -*/ - /*-----------------------------------------------------------------------------------*/ -h1 { - color: #339933; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - font-weight: bold; - text-decoration: none; -} - -h2 { - color: #339933; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; -} - -h1,h2,h3,h4,h5 { - margin: 0px; - padding: 0px; -} - -.txt_10_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active { - color: black; -} - -.txt_10_noir:hover { - color: red; -} - -.txt_11_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active { - color: black; -} - -.txt_11_noir:hover { - color: red; -} - -.txt_12_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active { - color: black; -} - -.txt_12_noir:hover { - color: red; -} - -.txt_14_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active { - color: black; -} - -.txt_14_noir:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active { - color: grey; -} - -.txt_10_gris:hover { - color: red; -} - -.txt_11_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active { - color: grey; -} - -.txt_11_gris:hover { - color: red; -} - -.txt_12_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active { - color: grey; -} - -.txt_12_gris:hover { - color: red; -} - -.txt_14_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active { - color: grey; -} - -.txt_14_gris:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active { - color: #FFFFFF; -} - -.txt_10_blanc:hover { - color: #FF8800; /*ORANGE*/ -} - -.txt_11_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active { - color: #FFFFFF; -} - -.txt_11_blanc:hover { - color: #FF8800; -} - -.txt_12_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active { - color: #FFFFFF; -} - -.txt_12_blanc:hover { - color: #FFAA00; -} - -.txt_14_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active { - color: #FFFFFF; -} - -.txt_14_blanc:hover { - color: #FF8800; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active { - color: #FF8800; -} - -.txt_10_orange:hover { - color: darkblue -} - -.txt_11_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active { - color: #FF8800; -} - -.txt_11_orange:hover { - color: darkblue; -} - -.txt_12_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active { - color: #FF8800; -} - -.txt_12_orange:hover { - color: darkblue; -} - -.txt_14_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active { - color: #FF8800; -} - -.txt_14_orange:hover { - color: darkblue; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active { - color: red; -} - -.txt_10_rouge:hover { - color: darkblue; -} - -.txt_11_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active { - color: red; -} - -.txt_11_rouge:hover { - color: darkblue; -} - -.txt_12_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active { - color: red; -} - -.txt_12_rouge:hover { - color: darkblue; -} - -.txt_14_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active { - color: red; -} - -.txt_14_rouge:hover { - color: darkblue; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active { - color: blue; -} - -.txt_10_bleu:hover { - color: red; -} - -.txt_11_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active { - color: blue; -} - -.txt_11_bleu:hover { - color: red; -} - -.txt_12_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active { - color: blue; -} - -.txt_12_bleu:hover { - color: red; -} - -.txt_14_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active { - color: blue; -} - -.txt_14_bleu:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active { - color: darkblue; -} - -.txt_10_bleu_f:hover { - color: red; -} - -.txt_11_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active { - color: darkblue; -} - -.txt_11_bleu_f:hover { - color: red; -} - -.txt_12_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active { - color: darkblue; -} - -.txt_12_bleu_f:hover { - color: red; -} - -.txt_14_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active { - color: darkblue; -} - -.txt_14_bleu_f:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active { - color: darkgreen; -} - -.txt_10_vert_f:hover { - color: red; -} - -.txt_11_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active { - color: darkgreen; -} - -.txt_11_vert_f:hover { - color: red; -} - -.txt_12_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active { - color: darkgreen; -} - -.txt_12_vert_f:hover { - color: red; -} - -.txt_14_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active { - color: darkgreen; -} - -.txt_14_vert_f:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active { - color: green; -} - -.txt_10_vert:hover { - color: red; -} - -.txt_11_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active { - color: green; -} - -.txt_11_vert:hover { - color: red; -} - -.txt_12_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active { - color: green; -} - -.txt_12_vert:hover { - color: red; -} - -.txt_14_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active { - color: green; -} - -.txt_14_vert:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.fond_blanc { - background-color: #FFFFFF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_gris_c, .fond_gris_c tr { - background-color: #FFFFFF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.fond_gris_c2, .fond_gris_c2 tr { - background-color: #FBFBFB; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_bleu_c, .fond_bleu_c tr { - background-color: #D9EEF9; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; - background-image: url(../images/fond_1.bmp); -} - -.fond_bleu_c2 { - background-color: #ECF4FF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_bleu_f { - background-color: #003366; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_orange { - background-color: #FEEFE7; - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - background-image: url(../images/fond_3.jpg); -} - -.fond_orange_2 { - background-color: #FFF8F4; - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - border: 1px solid orange; - border-collapse: collapse; -} - -.vccDlgBody { - border: 3px solid #336699; - border-collapse: collapse; - color: black; - background-color: #EEFFEE; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -/* DEFINITION DES STYLES DE TABLEAUX */ -.bordure_0 { - border: 0px solid; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.bordure_1_bleu { - border: 1px solid green; - border-collapse: collapse; - color: black; - background-color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.bordure_3_bleu { - border: 3px solid #336699; - border-collapse: collapse; - color: black; - background-color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.indent { - margin-left: 20px; -} - -/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */ -.Btn { - color: #003366; - text-align: center; - font-weight: bold; - background-color: #FFFFFF; - background-image: url(../images/ongletStyle1.jpg); - background-repeat: no-repeat; - background-position: center center; -} - -.Btn:hover { - color: red; -} - -.menu1h { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border-top: 1px solid #003366; - border-bottom: 1px solid #003366; - border-left: 1px solid #003366; - border-right: 1px solid white; - border-collapse: collapse; - display: block; -} - -.menu1h:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu1h_f { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border: 1px solid #003366; - display: block; -} - -.menu1h_f:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu1v { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border: 1px solid #003366; - border-collapse: collapse; - display: block; -} - -.menu1v:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu2v { - background-color: #5588BB; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - border: 1px solid #4277AB; - border-collapse: collapse; - float: left; - display: block; -} - -.menu2v:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menuEDF { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.menuEDF:hover { - color: #FF8800; -} - -/*bouton bleu sur blanc*/ -.Bouton { - color: #003366; - text-align: center; - font-weight: bold; - /* Ricardo cursor: hand; */ - cursor: pointer; - background-color: #FFFFFF; -} - -input { - border: 2px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.disabled_input { - border: 1px solid gray; - color: grey; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input0 { - border: 0px; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); -} - -.input2 { - border: 1px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input3 { - border: 1px solid black; - color: #003366; - background-color: #EEEEEE; - background-image: url(); -} - -.input4 { - border: 1px solid blue; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input5 { - border: 1px solid darkblue; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input_btn { - border: 0px; - /* cursor: hand; */ - cursor: pointer; -} - -textarea { - border: 2px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_5.bmp); -} - -.TEXTAREA3 { - border: 1px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(); -} - -.TEXTAREA4 { - border: 1px solid green; - color: #003366; - background-color: #EEEEEE; - background-image: url(); -} - -.hand { - cursor: hand; - cursor: pointer; -} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css deleted file mode 100644 index 5eb1982282..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/issue62.min.css +++ /dev/null @@ -1,25 +0,0 @@ -h1{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;font-weight:bold;text-decoration:none}h2{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none}h1,h2,h3,h4,h5{margin:0px;padding:0px}.txt_10_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active{color:black}.txt_10_noir:hover{color:red}.txt_11_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active{color:black}.txt_11_noir:hover{color:red}.txt_12_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active{color:black}.txt_12_noir:hover{color:red}.txt_14_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active{color:black}.txt_14_noir:hover{color:red}.txt_10_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active{color:grey}.txt_10_gris:hover{color:red}.txt_11_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active{color:grey}.txt_11_gris:hover{color:red}.txt_12_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active{color:grey}.txt_12_gris:hover{color:red}.txt_14_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active{color:grey}.txt_14_gris:hover{color:red}.txt_10_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active{color:#FFF}.txt_10_blanc:hover{color:#F80}.txt_11_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active{color:#FFF}.txt_11_blanc:hover{color:#F80}.txt_12_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active{color:#FFF}.txt_12_blanc:hover{color:#FA0}.txt_14_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active{color:#FFF}.txt_14_blanc:hover{color:#F80}.txt_10_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active{color:#F80}.txt_10_orange:hover{color:darkblue}.txt_11_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active{color:#F80}.txt_11_orange:hover{color:darkblue}.txt_12_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active{color:#F80}.txt_12_orange:hover{color:darkblue}.txt_14_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active{color:#F80}.txt_14_orange:hover{color:darkblue}.txt_10_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active{color:red}.txt_10_rouge:hover{color:darkblue}.txt_11_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active{color:red}.txt_11_rouge:hover{color:darkblue}.txt_12_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active{color:red}.txt_12_rouge:hover{color:darkblue}.txt_14_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active{color:red}.txt_14_rouge:hover{color:darkblue}.txt_10_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active{color:blue}.txt_10_bleu:hover{color:red}.txt_11_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active{color:blue}.txt_11_bleu:hover{color:red}.txt_12_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active{color:blue}.txt_12_bleu:hover{color:red}.txt_14_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active{color:blue}.txt_14_bleu:hover{color:red}.txt_10_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active{color:darkblue}.txt_10_bleu_f:hover{color:red}.txt_11_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active{color:darkblue}.txt_11_bleu_f:hover{color:red}.txt_12_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active{color:darkblue}.txt_12_bleu_f:hover{color:red}.txt_14_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active{color:darkblue}.txt_14_bleu_f:hover{color:red}.txt_10_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active{color:darkgreen}.txt_10_vert_f:hover{color:red}.txt_11_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active{color:darkgreen}.txt_11_vert_f:hover{color:red}.txt_12_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active{color:darkgreen}.txt_12_vert_f:hover{color:red}.txt_14_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active{color:darkgreen}.txt_14_vert_f:hover{color:red}.txt_10_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active{color:green}.txt_10_vert:hover{color:red}.txt_11_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active{color:green}.txt_11_vert:hover{color:red}.txt_12_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active{color:green}.txt_12_vert:hover{color:red}.txt_14_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active{color:green}.txt_14_vert:hover{color:red}.fond_blanc{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_gris_c, .fond_gris_c -tr{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.fond_gris_c2, .fond_gris_c2 -tr{background-color:#FBFBFB;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_c, .fond_bleu_c -tr{background-color:#D9EEF9;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_1.bmp)}.fond_bleu_c2{background-color:#ECF4FF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_f{background-color:#036;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_orange{background-color:#FEEFE7;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;background-image:url(../images/fond_3.jpg)}.fond_orange_2{background-color:#FFF8F4;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px -solid orange;border-collapse:collapse}.vccDlgBody{border:3px -solid #369;border-collapse:collapse;color:black;background-color:#EFE;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_0{border:0px -solid;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_1_bleu{border:1px -solid green;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_3_bleu{border:3px -solid #369;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.indent{margin-left:20px}.Btn{color:#036;text-align:center;font-weight:bold;background-color:#FFF;background-image:url(../images/ongletStyle1.jpg);background-repeat:no-repeat;background-position:center center}.Btn:hover{color:red}.menu1h{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border-top:1px solid #036;border-bottom:1px solid #036;border-left:1px solid #036;border-right:1px solid white;border-collapse:collapse;display:block}.menu1h:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu1h_f{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px -solid #036;display:block}.menu1h_f:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu1v{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px -solid #036;border-collapse:collapse;display:block}.menu1v:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu2v{background-color:#58B;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px -solid #4277AB;border-collapse:collapse;float:left;display:block}.menu2v:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menuEDF{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.menuEDF:hover{color:#F80}.Bouton{color:#036;text-align:center;font-weight:bold;cursor:pointer;background-color:#FFF}input{border:2px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.disabled_input{border:1px -solid gray;color:grey;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input0{border:0px;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp)}.input2{border:1px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input3{border:1px -solid black;color:#036;background-color:#EEE;background-image:url()}.input4{border:1px -solid blue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input5{border:1px -solid darkblue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input_btn{border:0px;cursor:pointer}textarea{border:2px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_5.bmp)}.TEXTAREA3{border:1px -solid green;color:#036;background-color:#FFF;background-image:url()}.TEXTAREA4{border:1px -solid green;color:#036;background-color:#EEE;background-image:url()}.hand{cursor:hand;cursor:pointer} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css deleted file mode 100644 index da7cfca20c..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.css +++ /dev/null @@ -1,12 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css deleted file mode 100644 index ffb94e2165..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_prepend.min.css +++ /dev/null @@ -1 +0,0 @@ -@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css deleted file mode 100644 index aa41d0a91e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.css +++ /dev/null @@ -1,14 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '../bar/foo.css' print; -@import '../../foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css deleted file mode 100644 index 34936155a0..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css +++ /dev/null @@ -1 +0,0 @@ -@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt deleted file mode 100644 index 0181755296..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css deleted file mode 100644 index d74c9aa02a..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.css +++ /dev/null @@ -1,42 +0,0 @@ -/* http://www.w3.org/TR/css3-selectors/ */ - -* -E[foo] -E[foo="bar"] -E[foo~="bar"] -E[foo^="bar"] -E[foo$="bar"] -E[foo*="bar"] -E[hreflang|="en"] -E:root -E:nth-child(n) -E:nth-last-child(n) -E:nth-of-type(n) -E:nth-last-of-type(n) -E:first-child -E:last-child -E:first-of-type -E:last-of-type -E:only-child -E:only-of-type -E:empty -E:link -E:visited -E:active -E:hover -E:focus -E:target -E:lang(fr) -E:enabled -E:disabled -E:checked -E::first-line -E::first-letter -E::selection -E::before -E::after -E.warning#myid -E:not(s) - > F - + F - ~ F {color: red;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css deleted file mode 100644 index 643089fcf7..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/selectors.min.css +++ /dev/null @@ -1,37 +0,0 @@ -* -E[foo] -E[foo="bar"] -E[foo~="bar"] -E[foo^="bar"] -E[foo$="bar"] -E[foo*="bar"] -E[hreflang|="en"] -E:root -E:nth-child(n) -E:nth-last-child(n) -E:nth-of-type(n) -E:nth-last-of-type(n) -E:first-child -E:last-child -E:first-of-type -E:last-of-type -E:only-child -E:only-of-type -E:empty -E:link -E:visited -E:active -E:hover -E:focus -E:target -E:lang(fr) -E:enabled -E:disabled -E:checked -E::first-line -E::first-letter -E::selection -E::before -E::after -E.warning#myid -E:not(s)>F+F~F{color:red} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css deleted file mode 100644 index bf46c0af0e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.css +++ /dev/null @@ -1,31 +0,0 @@ -/* some CSS to try to exercise things in general */ - -@import url( /more.css ); - - body, td, th { - font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; - - font-size : 12px; -} - -.nav { - margin-left: 20%; -} -#main-nav { - background-color: red; - border: 1px solid #00ff77; -} - -div#content -h1 + p { - padding-top: 0; - margin-top: 0; -} - -@media all and (min-width: 640px) { - #media-queries-1 { background-color: #0f0; } -} - -@media screen and (max-width: 2000px) { - #media-queries-2 { background-color: #0f0; } -} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css deleted file mode 100644 index a823b0550f..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/styles.min.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px -solid #0f7}div#content -h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css deleted file mode 100644 index 79d34ec4a8..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.css +++ /dev/null @@ -1,434 +0,0 @@ -/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+ -Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */ -/* The content of the posts (body of text) */ -/* General page style */ - - - - /* begin suggest post */ - .float-l{ - float: left; - } - - .form-suggest{ - height:200px; - background:#DEE2D0; - vertical-align: top; - } - - .form-input input{ - font-size: 10px; - } - - .hide{ - display:none; - } - - .form-input textarea{ - font-size: 11px; - width: 350px; - } - - .form-label{ - font-size: 10px; - font-weight: bold; - line-height: 25px; - padding-right: 10px; - text-align: right; - width: 100px; - color: #39738F; - } - - .font-9{ - font-size: 9px; - } - - .form-topic{ - font-weight:bold; - - } - - .form-error{ - color:red; - } - - .inline{ - display: inline; - } - - .space-10{ - clear: both; - font-size: 10px; - height: 10px; - line-height: 10px; - } - - .suggest-success{ - color:green; - padding-left:10px; - font-size:11px; - font-weight:bold; - } - - .top{ - vertical-align: top; - } - /* end suggest post */ - -table td{ - padding:3px; -} - -a:link,a:active,a:visited,a.postlink{ - color: #006699; - text-decoration: none; -} - -a:hover{ - color: #DD6900; -} - -a.admin:hover,a.mod:hover{ - color: #DD6900; -} - -a.but,a.but:hover,a.but:visited{ - color: #000000; - text-decoration: none; -} - -a.topictitle:visited{ - color: #5493B4; -} - -a.topictitle:hover{ - color: #DD6900; -} - - - -body{ - color: #000000; - font: 11px Verdana,Arial,Helvetica,sans-serif; - margin: 0 10px 10px 10px; - padding: 0; - overflow:auto; -} - -/* General font families for common tags */ -font,th,td,p{ - font: 12px Verdana,Arial,Helvetica,sans-serif; -} - -/* Form elements */ -form{ - display: inline; -} - -hr{ - border: 0px solid #FFFFFF; - border-top-width: 1px; - height: 0px; -} - -/* Gets rid of the need for border="0" on hyperlinked images */ -img{ - border: 0 solid; -} - -input{ - font: 11px Verdana,Arial,Helvetica,sans-serif; -} - -input.button,input.liteoption,.fakebut{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 11px; -} - -input.catbutton{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 10px; -} - -input.mainoption{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 11px; - font-weight: bold; -} - -input.post,textarea.post{ - background: #FFFFFF; - border: 1px solid #000000; - font: 11px Verdana,Arial,Helvetica,sans-serif; - padding-bottom: 2px; - padding-left: 2px; -} - -select{ - background: #FFFFFF; - font: 11px Verdana,Arial,Helvetica,sans-serif; -} - -table{ - text-align: left; -} - -td{ - vertical-align: middle; -} - -/* Category gradients*/ -td.cat{ - background-color: #C2C6BA; - font-weight: bold; - height: 20px; - letter-spacing: 1px; - text-indent: 4px; -} - -td.genmed,.genmed{ - font-size: 11px; -} - -/* This is for the table cell above the Topics,Post & Last posts on the index.php */ -td.rowpic{ - background: #C2C6BA; -} - -td.spacerow{ - background: #E5E6E2; -} - -/* Table Header cells */ -th{ - background-color: #FADD31; - background-image: url(images/cellpic3.gif); - background-repeat: repeat-x; - color: #68685E; - font-size: 11px; - font-weight: bold; - line-height:16px; - height: 16px; - padding-left: 8px; - padding-right: 8px; - text-align: center; - white-space: nowrap; -} - -/* Admin & Moderator Colours MODification */ -.admin,.mod{ - font-size: 11px; - font-weight: bold; -} - -.admin,a.admin,a.admin:visited{ - color: #FFA34F; -} - -/* This is the border line & background colour round the entire page */ -.bodyline{ - background: #FFFFFF; - border: 1px solid #98AAB1; -} - -.center{ - text-align: center; -} - -/* Code blocks */ -.code{ - background: #FAFAFA; - border: 1px solid #D1D7DC; - color: #006600; - font: 12px Courier,"Courier New",sans-serif; - padding: 5px; -} - -/* This is for the error messages that pop up */ -.errorline{ - background: #E5E6E2; - border: 1px solid #8F8B8B; - color:#D92A2A; -} - -.explaintitle{ - color: #5C81B1; - font-size: 11px; - font-weight: bold; -} - -/* This is the outline round the main forum tables */ -.forumline{ - background: #FFFFFF; -} - -/* General text */ -.gensmall{ - font-size: 10px; -} - -.h1-font{ - color: #006699; - display: inline; - font: bold 13px Verdana, Arial, Helvetica, sans-serif; - margin: 0; - text-decoration: none; -} - -.h2-font{ - display: inline; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; -} - -.height1{ - height: 1px; -} - -.height22{ - height: 22px; -} - -.height25{ - height: 25px; -} - -.height28{ - height: 28px; -} - -.height30{ - height: 30px; -} - -.height40{ - height: 40px; -} - -/* This is the line in the posting page which shows the rollover -help line. Colour value in row2 */ -.helpline{ - border: 0 solid; - font-size: 10px; -} - -.imgfolder{ - margin: 1px 4px 1px 4px; -} - -.imgspace{ - margin-left: 1px; - margin-right: 2px; -} - -/* Specify the space around images */ -.imgtopic,.imgicon{ - margin-left: 3px; -} - -.left{ - text-align: left; -} - -/* The largest text used in the index page title and toptic title etc. */ -.maintitle,h1,h2{ - color: #5C81B1; - font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; - text-decoration: none; -} - -.maxwidth{ - width: 100%; -} - -.mod,a.mod,a.mod:visited{ - color: #006600; -} - -/* Name of poster in viewmsg.php and viewtopic.php and other places */ -.name{ - font-size: 11px; - font-weight: bold; -} - -/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */ -.nav{ - font-size: 11px; - font-weight: bold; -} - -.nowrap{ - white-space: nowrap; -} - -.postbody{ - font-size: 12px; - line-height: 125%; -} - -.postbody a{ - text-decoration: underline; -} - -/* Location,number of posts,post date etc */ -.postdetails{ - color: #00396A; - font-size: 10px; -} - -/* Quote blocks */ -.quote{ - background: #F3F3EF; - border: 1px solid #C2C6BA; - color: #006699; - font-size: 11px; - line-height: 125%; -} - -.right{ - text-align: right; -} - -/* Main table cell colours and backgrounds */ -.row1{ - background: #F0F0EB; -} - -.row2,.helpline{ - background: #E5E6E2; -} - -.row3{ - background: #DBDBD4; -} - -.subtitle,h2{ - font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; - text-decoration: none; -} - -/* titles for the topics:could specify viewed link colour too */ -.topictitle { - color: #000000; - font-size: 11px; - font-weight: bold; -} - -.underline{ - text-decoration: underline; -} - -.top{ -vertical-align:top; -} - -.image-hspace{ -margin-right:3px; -} - -.clear{ -clear:both; -} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css deleted file mode 100644 index f59b15a92e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/subsilver.min.css +++ /dev/null @@ -1,18 +0,0 @@ -.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input -input{font-size:10px}.hide{display:none}.form-input -textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table -td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0 -10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px -solid #FFF;border-top-width:1px;height:0px}img{border:0 -solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px -solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px -solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px -solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px -solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px -solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px -solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px -solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0 -solid;font-size:10px}.imgfolder{margin:1px -4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody -a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px -solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css deleted file mode 100644 index 69fa756eb9..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.css +++ /dev/null @@ -1,10 +0,0 @@ -/* test unusual, but valid strings in CSS */ - -foo[attr="multiple spaces"] { - content: "Hello World!"; -} - -foo[attr="Hel\ -lo"] { - content: " \"World\""; -} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css deleted file mode 100644 index 4b7d97e455..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/unusual_strings.min.css +++ /dev/null @@ -1,2 +0,0 @@ -foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\ -lo"]{content:" \"World\""} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css deleted file mode 100644 index 819835e582..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.css +++ /dev/null @@ -1,658 +0,0 @@ -/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */ - - #comments_inviter #close_me { - clear: both; - text-align: center; - border-top: 1px solid #eeeeee; - padding-top: 10px; - } - - #comments_inviter #close_me span { - color: #108eed; - cursor: pointer; - font-weight: bold; - } - - #comments_inviter img { - float: left; - margin-right: 3px; - margin-bottom: 10px; - } - - #comments_inviter { - width: 200px; - background-color: #FFFFFF; - border: 4px solid #eeeeee; - font-size: 10px; - font-family: verdana; - padding: 10px; - color: #333333; - } - - .one_com { - background-color: #FAFAFA; - padding: 10px; - margin-bottom: 20px; - border: 1px solid #EEEEEE; - } - - .one_com .com_says, .one_com .com_det { - text-transform: lowercase; - color: #333333; - padding: 0px; - font-family: verdana; - margin: 0px; - font-size: 13px; - font-weight: bold; - } - - .flvPlayer { - text-align: center; - border: 5px solid #dddddd; - width: 320px; - } - - .one_com .com_det { - font-size: 10px; - font-weight: normal; - margin-bottom: 20px; - padding-bottom: 10px; - border-bottom: 8px solid #eeeeee; - } - - .one_com .com_det a { - text-decoration: none; - } - - .one_com .com_txt { - background-color: #ffffff; - margin-bottom: 10px; - border-bottom: 2px solid #eeeeee - } - - .one_com .com_txt p { - font-family: verdana; - font-size: 13px; - color: #777777; - margin: 0px; - padding: 5px; - padding-bottom: 10px; - text-transform: lowercase; - } - - .one_com .com_says a { - color: #333333; - } - - .one_com .com_det a { - color: #333333; - } - - .post_box .related_posts { - - } - - .post_box .related_posts p { - padding: 0px; - margin: 0px; - padding-bottom: 20px; - padding-left: 35px; - font-family: verdana; - - } - - .post_box .related_posts a { - color: #108eed; - } - - .post_nav_2 p { - - text-align: center; - color: #cccccc; - font-family: verdana; - } - - .post_box .related_posts h3, #comments_box #respond, .comments_posted h3 { - padding: 0px; - margin: 0px; - font-size: 18px; - color: #FF8000; - padding-top: 30px; - margin-bottom: 20px; - width: 300px; - border-bottom: 5px solid #e0e0e0; - } - - .comments_posted { - - margin-bottom: 50px; - - } - - .comments_posted h3 { - padding: 0px; - margin: 0px; - margin-bottom: 20px; - - } - - .cmt_txtarea { - width: 300px; - height: 100px; - - } - - #comments_box #respond { - - padding-top: 0px; - margin-bottom: 0px; - - } - - .pagetitle { - color: #65DA33; - text-align: center; - } - - #searchform { - padding: 0px; - margin: 0px; - } - - .si { - background-color: #FFFFEE; - border: 1px solid #e0e0e0; - } - - #rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags { - margin-top: 30px; - padding-bottom: 10px; - } - - #post_nav p { - padding: 0px; - margin: 0px; - padding-bottom: 5px; - } - - #post_nav { - text-align: left; - padding-bottom: 15px; - } - - #post_nav a, .post_nav_2 p a { - text-decoration: none; - font-family: Verdana; - font-size: 12px; - color: #108eed; - } - - #post_nav a:hover, .post_nav_2 p a:hover { - text-decoration: underline; - color: #FF8000; - } - - #rightcol #about { - padding-bottom: 10px; - } - - #rightcol #r_news input { - color: #333333; - font-size: 12px; - } - - #header { - height: 200px; - width: 100%; - background-image: url('images/header_bg.jpg'); - background-repeat: x-repeat; - } - - #header img { - - float: right; - margin-right: -3px; - z-index: 100; - - } - - .tags { - text-transform: lowercase; - color: #333333; - font-family: arial; - font-size: 12px; - border-top: 2px dotted #EEEEEE; - width: 300px; - padding-top: 20px; - padding-bottom: 0px; - margin-top: 0px; - padding-left: 20px; - padding-right: 20px; - } - - .tags a { - color: #108eed; - } - - .tags p { - text-align: left; - margin: 0px; - padding: 0px; - } - - blockquote strong { - font-family: verdana; - display: block; - margin-top: 10px; - color: #FF0000; - font-style: italic; - text-align: right; - } - - blockquote { - margin: 0px; - background-color: #eeeeee; - border: 2px solid #dddddd; - padding: 24px; - padding-top: 10px; - padding-left: 60px; - padding-bottom: 10px; - font-size: 13px; - color: #333333; - margin-bottom: 30px; - margin-top: 10px; - } - - - html>body #header img { margin-right: 0px; } - - #subscribe h3 { - color: #ff0000; - margin-top: 30px; - padding: 20px; - } - - .post_actions a{ - color: #108eed; - } - - .post_actions { - border-top: 4px solid #DDDDDD; - border-bottom: 1px solid #EEEEEE; - text-align: center; - background-color: #FFFFDd; - color: #dddddd; - white-space: no-wrap; - padding-left: 20px; - padding-bottom: 5px; - text-transform: capitalize; - } - - #subscribe td { - color: #333333; - font-size: 12px; - text-transform: lowercase; - } - - #subscribe input { - font-size: 13px; - color: #333333; - } - - .post_content { - font-size: 13px; - margin-top: 10px; - padding-bottom: 10px; - text-align: justify; - font-family: verdana; - } - - .post_content p { - margin: 0px; - padding: 0px; - padding-bottom: 20px; - line-height: 20px; - } - - #header h1 { - z-index: 200; - margin: 0px; - position: absolute; - float: left; - text-transform: lowercase; - padding: 0px; - font-size: 45px; - margin-top: 70px; - margin-left: 40px; - - } - - #header h1 a { - white-space: no-wrap; - text-decoration: none; - color: #FAFAFA; - display: block - } - - #header h1 a:hover { - color: #FAFAFA; - border-bottom: 3px dotted #FAFAFA; - } - - html>body #header h1 { margin-left: 60px; } - - body { - margin: 0px; - padding: 0px; - height: 100%; - width: 100%; - font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial; - font-size: 12px; - } - - #leftcol { - float: left; - width: 200px; - margin-left: 0px; - margin-top: 17px; - color: #000; - padding: 3px; - height: 100%; - } - - #leftcol .box_head h3 { - text-transform: uppercase; - padding: 0px; - margin: 0px; - font-family: georgia; - font-size: 18px; - color: #dddddd; - border-top: 4px solid #dddddd; - border-bottom: 4px solid #cccccc; - padding-left: 10px; - padding-top: 10px; - padding-bottom: 10px; - background-image: url('images/stripesbg.png'); - margin-bottom: 10px; - } - - #leftcol .box_head input { - text-transform: lowercase; - color: #333333; - } - - #leftcol .box_head { - margin-left: 7px; - background-color: #ffefd4; - border-bottom: 2px solid #eeeeee; - padding-bottom: 20px; - margin-bottom: 30px; - } - - #leftcol .box_head p a { - color: #0a2d4d; - display: block; - text-decoration: none; - border-bottom: 3px solid #fefefe; - padding-top: 20px; - text-transform: lowercase; - padding-bottom: 20px; - padding-left: 5px; - padding-right: 5px; - } - - #leftcol .box_head p a:hover { - background-color: #fafafa; - border-bottom: 3px solid #eeeeee; - color: #000000; - } - - #leftcol .box_head p { - text-align: left; - margin: 0px; - width: 170px; - padding-bottom: 0px; - padding-top: 0px; - font-size: 11px; - } - - #rightcol { - position: absolute; - left: 77%; - top: 278px; - border: 3px solid #eeeeee; - width: 200px; - z-index: 3; - color: #333333; - padding: 10px; - text-transform: lowercase; - - } - - #rightcol p { - padding: 0px; - marging: 0px; - text-align: justify; - } - - #rightcol #about img, #rightcol #linksbro img { - border: 5px solid #eeeeee; - } - - #rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 { - background-color: #fafafa; - border: 1px dotted #e0e0e0; - font-size: 14px; - color: #104bbc; - padding: 5px; - padding-top: 10px; - font-family: Arial; - padding-bottom: 10px; - } - - #rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a { - color: #108eed; - } - - #rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p { - font-size: 12px; - text-align: left; - } - - #content_warp { - margin: 20px 25% 0 215px; - padding: 3px; - color: #000; - background-color: #ededed; - } - - #content { - margin: 5px; - background-color: #FFFFFF; - padding: 10px; - } - - - #footer { - width: 99%; - margin-top: 30px; - height: 98px; - background-color: #101b1d; - } - - #footer td a { - color: #FF8000; - } - - #footer td a img { - border: 2px solid #108eed; - } - - #footer td p { - font-family: Verdana; - font-size: 10px; - color: #c0c0c0; - padding: 0px; - margin: 0px; - text-align: center; - padding-bottom: 10px; - } - - .s_offer { - color: #65DA33; - font-size: 20px; - font-weight: bold; - font-style: normal; - } - - .post_box { - text-transform: lowercase; - margin-bottom: 40px; - } - - #newsletter_box { - text-transform: lowercase; - margin-bottom: 10px; - margin-top: 30px; - font-style: normal; - background-color: #ffffff; - border: 5px solid #dddddd; - } - - #newsletter_head { - color: #EEEEEE; - font-family: Georgia; - background-image: url('images/stripesbg.png'); - padding: 10px; - padding-left: 30px; - border-bottom: 5px solid #dddddd; - } - - #newsletter_body { - color: #333333; - font-family: Verdana; - text-align: justify; - background-color: #FFFFFF; - padding: 10px; - font-size: 13px; - } - - .s_offer { - color: #65DA33; - font-size: 26px; - font-weight: bold; - font-style: normal; - } - - .post_title a { - color: #EEEEEE; - text-decoration: none; - } - - .post_title a:hover { - color: #c0c0c0; - } - - .post_title { - background-image: url('images/stripe_post.png'); - text-transform: uppercase; - font-size: 18px; - font-family: georgia; - padding: 10px; - border-top: 4px solid #c0c0c0; - margin: 0px; - border-bottom: 2px solid #ffffdd; - } - - .post_det { - text-transform: none; - margin: 0px; - border-top: 1px solid #f0f0f0; - padding: 0px; - padding-top: 5px; - color: #999999; - font-size: 10px; - font-family: verdana; - margin-bottom: 20px; - background-color: #eeeeee; - padding-bottom: 5px; - padding-left: 10px; - text-align: left; - border-bottom: 2px solid #dddddd; - } - - .post_det a { - color: #999999; - text-decoration: none; - } - - - .subtle { - text-transform: lowercase; - font-size: 10px; - font-family: verdana; - color: #108eed; - text-align: justify; - } - - #top_menu #navlist, #top_menu #navlist li { - padding:0px; - margin: 0px; - padding-top: 14px; - text-transform: lowercase; - padding-bottom: 17px; - padding-left: 30px; - border-left: 1px solid #65cdef; - } - - #top_menu #navlist, #top_menu #navlist li #first { - - border-left: 0px; - - } - - #top_menu #navlist { - padding-left: 30px; - background-color: #1dabd9; - border-top: 5px solid #0e96c3; - border-bottom: 5px solid #0e96c3; - } - - #top_menu #navlist li { - color: #444444; - font-size: 10px; - display: inline; - list-style-type: none; - padding-right: 30px; - } - - #top_menu #navlist li a { - text-decoration: none; - font-family: Verdana; - color: #fafafa; - font-size: 12px; - font-weight: bold; - } - - #top_menu #navlist li a:hover { - color: #333333; - } - - .post_content a { - color: #108eed; - } - - ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; } - ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;} - ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; } - ul#tagcloud li a:hover { text-decoration:underline; } - ul#tagcloud li.t1 a { color:#797979; font-size: 120%; } - ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; } - ul#tagcloud li.t3 a { color:#616161; font-size: 190%; } - ul#tagcloud li.t4 a { color:#555555; font-size: 210%; } - ul#tagcloud li.t5 a { color:#484848; font-size: 230%; } - ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; } - ul#tagcloud li.t7 a { color:#303030; font-size: 270%; } - ul#tagcloud li.t8 a { color:#242424; font-size: 290%; } - ul#tagcloud li.t9 a { color:#181818; font-size: 310%; } - ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css deleted file mode 100644 index eaffaee38a..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css/vladmirated.min.css +++ /dev/null @@ -1,79 +0,0 @@ -#comments_inviter -#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me -span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter -img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px -solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px -solid #EEE}.one_com .com_says, .one_com -.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px -solid #ddd;width:320px}.one_com -.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det -a{text-decoration:none}.one_com -.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt -p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says -a{color:#333}.one_com .com_det -a{color:#333}.post_box -.related_posts{}.post_box .related_posts -p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts -a{color:#108eed}.post_nav_2 -p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted -h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted -h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box -#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px -solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol -#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav -p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p -a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol -#about{padding-bottom:10px}#rightcol #r_news -input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header -img{float:right;margin-right: -3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags -a{color:#108eed}.tags -p{text-align:left;margin:0px;padding:0px}blockquote -strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px -solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header -img{margin-right:0px}#subscribe -h3{color:#f00;margin-top:30px;padding:20px}.post_actions -a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe -td{color:#333;font-size:12px;text-transform:lowercase}#subscribe -input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content -p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header -h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1 -a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header -h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head -h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head -input{text-transform:lowercase;color:#333}#leftcol -.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p -a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head -p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px -solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol -p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro -img{border:5px -solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags -h3{background-color:#fafafa;border:1px -dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p -a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro -p{font-size:12px;text-align:left}#content_warp{margin:20px -25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td -a{color:#FF8000}#footer td a -img{border:2px -solid #108eed}#footer td -p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px -solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title -a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det -a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist -li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li -#first{border-left:0px}#top_menu -#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist -li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li -a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content -a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud -li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1 -a{color:#797979;font-size:120%}ul#tagcloud li.t2 -a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3 -a{color:#616161;font-size:190%}ul#tagcloud li.t4 -a{color:#555;font-size:210%}ul#tagcloud li.t5 -a{color:#484848;font-size:230%}ul#tagcloud li.t6 -a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7 -a{color:#303030;font-size:270%}ul#tagcloud li.t8 -a{color:#242424;font-size:290%}ul#tagcloud li.t9 -a{color:#181818;font-size:310%}ul#tagcloud li.t10 -a{color:#0c0c0c;font-size:330%} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css deleted file mode 100644 index d749295b77..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css +++ /dev/null @@ -1,14 +0,0 @@ -@import "/_test_files/css_uriRewriter/foo.css"; -@import '/_test_files/css_uriRewriter/bar/foo.css' print; -@import '/_test_files/bar/foo.css' print; -@import '/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(/_test_files/foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css deleted file mode 100644 index aa41d0a91e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/css_uriRewriter/in.css +++ /dev/null @@ -1,14 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '../bar/foo.css' print; -@import '../../foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html deleted file mode 100644 index c22cc8f20d..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - css Zen Garden: The Beauty in CSS Design - - - - - - - - - - - - -

    Browser != IE

    -
    - -
    -	White  space  is  important   here!
    -		
    -
    -

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    -

    Download the sample html file and css file

    -
    - -
    - - \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html deleted file mode 100644 index 58ba2bb988..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before.min.html +++ /dev/null @@ -1,36 +0,0 @@ -css Zen Garden: The Beauty in CSS Design

    Browser != IE

    css Zen Garden

    The Beauty of CSS Design

    -	White  space  is  important   here!
    -		

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    Download the sample html file and css file

    \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html deleted file mode 100644 index 4ca7f199e1..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - css Zen Garden: The Beauty in CSS Design - - - - - - - - - - - - -

    Browser != IE

    -
    - -
    -	White  space  is  important   here!
    -		
    -
    -

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    -

    Download the sample html file and css file

    -
    - -Preserve at least 1 char of whitespace near scripts in case of document.write(). -
    - - \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html deleted file mode 100644 index ae28465bcd..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/html/before2.min.html +++ /dev/null @@ -1,36 +0,0 @@ -css Zen Garden: The Beauty in CSS Design

    Browser != IE

    css Zen Garden

    The Beauty of CSS Design

    -	White  space  is  important   here!
    -		

    A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

    Download the sample html file and css file

    Preserve at least 1 char of whitespace near scripts in case of document.write().
    \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css deleted file mode 100644 index da52c69491..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/adjacent.css +++ /dev/null @@ -1,3 +0,0 @@ -/* @import url('bad.css' ) bad; */ -adjacent2 foo { background: red url(/red.gif); } -adjacent2 bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css deleted file mode 100644 index 69fa2f5ef3..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/1/tv.css +++ /dev/null @@ -1,4 +0,0 @@ -@import url( adjacent.css ) all; -@import '../input.css'; -tv foo { background: red url(/red.gif); } -tv bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css deleted file mode 100644 index b452f473e7..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/adjacent.css +++ /dev/null @@ -1,4 +0,0 @@ -@import url(../css/styles.css); -@import url(http://example.com/hello.css); -adjacent foo { background: red url(/red.gif); } -adjacent bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css deleted file mode 100644 index bb7b959511..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/input.css +++ /dev/null @@ -1,4 +0,0 @@ -@import url( adjacent.css ) screen; -@import "1/tv.css" tv, projection; -input foo { background: red url(/red.gif); } -input bar { background: url('../green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css deleted file mode 100644 index 1e4358c25d..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/importProcessor/output.css +++ /dev/null @@ -1,48 +0,0 @@ -@media screen { -/* some CSS to try to exercise things in general */ - -@import url(/more.css); - - body, td, th { - font-family: Verdana , "Bitstream Vera Sans" , sans-serif ; - - font-size : 12px; -} - -.nav { - margin-left: 20%; -} -#main-nav { - background-color: red; - border: 1px solid #00ff77; -} - -div#content -h1 + p { - padding-top: 0; - margin-top: 0; -} - -@media all and (min-width: 640px) { - #media-queries-1 { background-color: #0f0; } -} - -@media screen and (max-width: 2000px) { - #media-queries-2 { background-color: #0f0; } -} -@import url(http://example.com/hello.css); -adjacent foo { background: red url(/red.gif); } -adjacent bar { background: url('%TEST_FILES_URI%/green.gif') } -} - -@media tv,projection { -/* @import url('%TEST_FILES_URI%/importProcessor/1/bad.css') bad; */ -adjacent2 foo { background: red url(/red.gif); } -adjacent2 bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } -@import '../input.css'; -tv foo { background: red url(/red.gif); } -tv bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') } -} - -input foo { background: red url(/red.gif); } -input bar { background: url('%TEST_FILES_URI%/green.gif') } \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js deleted file mode 100644 index cccdb9706e..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.js +++ /dev/null @@ -1,57 +0,0 @@ -/*! is.js - - (c) 2001 Douglas Crockford - 2001 June 3 -*/ - -// is - -// The -is- object is used to identify the browser. Every browser edition -// identifies itself, but there is no standard way of doing it, and some of -// the identification is deceptive. This is because the authors of web -// browsers are liars. For example, Microsoft's IE browsers claim to be -// Mozilla 4. Netscape 6 claims to be version 5. - -var is = { - ie: navigator.appName == 'Microsoft Internet Explorer', - java: navigator.javaEnabled(), - ns: navigator.appName == 'Netscape', - ua: navigator.userAgent.toLowerCase(), - version: parseFloat(navigator.appVersion.substr(21)) || - parseFloat(navigator.appVersion), - win: navigator.platform == 'Win32' -} -/*!* - * preserve this comment, too - */ -is.mac = is.ua.indexOf('mac') >= 0; -if (is.ua.indexOf('opera') >= 0) { - is.ie = is.ns = false; - is.opera = true; -} -if (is.ua.indexOf('gecko') >= 0) { - is.ie = is.ns = false; - is.gecko = true; -} - -/*@cc_on - /*@if (@_win32) - if (is.ie && is.win) - document.write("PASS: IE/win honored conditional comment.
    "); - @else @*/ - if (is.ie && is.win) - document.write("FAIL: IE/win did not honor multi-line conditional comment.
    "); - else - document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    "); - /*@end -@*/ - -var recognizesCondComm = true; -//@cc_on/* -recognizesCondComm = false; -//@cc_on*/ - -if ((is.ie && is.win) == recognizesCondComm) - document.write("PASS: IE/win honored single-line conditional comment.
    "); -else - document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js deleted file mode 100644 index 6f06c6e6ce..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/* is.js - - (c) 2001 Douglas Crockford - 2001 June 3 -*/ -var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} -/** - * preserve this comment, too - */ -is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} -if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on - /*@if (@_win32) - if (is.ie && is.win) - document.write("PASS: IE/win honored conditional comment.
    "); - @else @*/if(is.ie&&is.win) -document.write("FAIL: IE/win did not honor multi-line conditional comment.
    ");else -document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    ");/*@end -@*/var recognizesCondComm=true;//@cc_on/* -recognizesCondComm=false;//@cc_on*/ -if((is.ie&&is.win)==recognizesCondComm) -document.write("PASS: IE/win honored single-line conditional comment.
    ");else -document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js deleted file mode 100644 index 6f06c6e6ce..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/before.min_plus.js +++ /dev/null @@ -1,22 +0,0 @@ -/* is.js - - (c) 2001 Douglas Crockford - 2001 June 3 -*/ -var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} -/** - * preserve this comment, too - */ -is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} -if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on - /*@if (@_win32) - if (is.ie && is.win) - document.write("PASS: IE/win honored conditional comment.
    "); - @else @*/if(is.ie&&is.win) -document.write("FAIL: IE/win did not honor multi-line conditional comment.
    ");else -document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
    ");/*@end -@*/var recognizesCondComm=true;//@cc_on/* -recognizesCondComm=false;//@cc_on*/ -if((is.ie&&is.win)==recognizesCondComm) -document.write("PASS: IE/win honored single-line conditional comment.
    ");else -document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
    "); \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js deleted file mode 100644 index 28aa1268be..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.js +++ /dev/null @@ -1,14 +0,0 @@ -var isWin; -/*@cc_on - @if (@_win32) - isWin = true; - @else @*/ isWin = false; - /*@end -@*/ - -isWin = /*@cc_on!*/!1; - -var recognizesCondComm = true; -//@cc_on/* -recognizesCondComm = false; -//@cc_on*/ diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js deleted file mode 100644 index d8c1ed3861..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js +++ /dev/null @@ -1,13 +0,0 @@ -var isWin; -/*@cc_on - @if (@_win32) - isWin = true; - @else @*/ - isWin = false; - /*@end -@*/ - -var recognizesCondComm = true; -//@cc_on/* -recognizesCondComm = false; -//@cc_on*/ \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js deleted file mode 100644 index e12eaeb487..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.js +++ /dev/null @@ -1,4 +0,0 @@ - -function testIssue74() { - return /'/; -} diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js deleted file mode 100644 index 3442a73fcd..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min.js +++ /dev/null @@ -1 +0,0 @@ -function testIssue74(){return /'/;} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js deleted file mode 100644 index 9caaa899c9..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/issue74.min_plus.js +++ /dev/null @@ -1 +0,0 @@ -function testIssue74(){return /'/} \ No newline at end of file diff --git a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js b/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js deleted file mode 100644 index c5a3337600..0000000000 --- a/plugins/Minify/extlib/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js +++ /dev/null @@ -1,3408 +0,0 @@ -(function(){ -/*! - * jQuery 1.2.3 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ - * $Rev: 4663 $ - */ - -// Map over jQuery in case of overwrite -if ( window.jQuery ) - var _jQuery = window.jQuery; - -var jQuery = window.jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.prototype.init( selector, context ); -}; - -// Map over the $ in case of overwrite -if ( window.$ ) - var _$ = window.$; - -// Map the jQuery namespace to the '$' one -window.$ = jQuery; - -// A simple way to check for HTML strings or ID strings -// (both of which we optimize for) -var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; - -// Is it a simple selector -var isSimple = /^.[^:#\[\.]*$/; - -jQuery.fn = jQuery.prototype = { - init: function( selector, context ) { - // Make sure that a selection was provided - selector = selector || document; - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this[0] = selector; - this.length = 1; - return this; - - // Handle HTML strings - } else if ( typeof selector == "string" ) { - // Are we dealing with HTML string or an ID? - var match = quickExpr.exec( selector ); - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) - selector = jQuery.clean( [ match[1] ], context ); - - // HANDLE: $("#id") - else { - var elem = document.getElementById( match[3] ); - - // Make sure an element was located - if ( elem ) - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id != match[3] ) - return jQuery().find( selector ); - - // Otherwise, we inject the element directly into the jQuery object - else { - this[0] = elem; - this.length = 1; - return this; - } - - else - selector = []; - } - - // HANDLE: $(expr, [context]) - // (which is just equivalent to: $(content).find(expr) - } else - return new jQuery( context ).find( selector ); - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) - return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); - - return this.setArray( - // HANDLE: $(array) - selector.constructor == Array && selector || - - // HANDLE: $(arraylike) - // Watch for when an array-like object, contains DOM nodes, is passed in as the selector - (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || - - // HANDLE: $(*) - [ selector ] ); - }, - - // The current version of jQuery being used - jquery: "1.2.3", - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - // The number of elements contained in the matched element set - length: 0, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == undefined ? - - // Return a 'clean' array - jQuery.makeArray( this ) : - - // Return just the object - this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - // Build a new jQuery matched element set - var ret = jQuery( elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Force the current matched set of elements to become - // the specified array of elements (destroying the stack in the process) - // You should use pushStack() in order to do this, but maintain the stack - setArray: function( elems ) { - // Resetting the length to 0, then using the native Array push - // is a super-fast way to populate an object with array-like properties - this.length = 0; - Array.prototype.push.apply( this, elems ); - - return this; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - var ret = -1; - - // Locate the position of the desired element - this.each(function(i){ - if ( this == elem ) - ret = i; - }); - - return ret; - }, - - attr: function( name, value, type ) { - var options = name; - - // Look for the case where we're accessing a style value - if ( name.constructor == String ) - if ( value == undefined ) - return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; - - else { - options = {}; - options[ name ] = value; - } - - // Check to see if we're setting style values - return this.each(function(i){ - // Set all the styles - for ( name in options ) - jQuery.attr( - type ? - this.style : - this, - name, jQuery.prop( this, options[ name ], type, i, name ) - ); - }); - }, - - css: function( key, value ) { - // ignore negative width and height values - if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) - value = undefined; - return this.attr( key, value, "curCSS" ); - }, - - text: function( text ) { - if ( typeof text != "object" && text != null ) - return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); - - var ret = ""; - - jQuery.each( text || this, function(){ - jQuery.each( this.childNodes, function(){ - if ( this.nodeType != 8 ) - ret += this.nodeType != 1 ? - this.nodeValue : - jQuery.fn.text( [ this ] ); - }); - }); - - return ret; - }, - - wrapAll: function( html ) { - if ( this[0] ) - // The elements to wrap the target around - jQuery( html, this[0].ownerDocument ) - .clone() - .insertBefore( this[0] ) - .map(function(){ - var elem = this; - - while ( elem.firstChild ) - elem = elem.firstChild; - - return elem; - }) - .append(this); - - return this; - }, - - wrapInner: function( html ) { - return this.each(function(){ - jQuery( this ).contents().wrapAll( html ); - }); - }, - - wrap: function( html ) { - return this.each(function(){ - jQuery( this ).wrapAll( html ); - }); - }, - - append: function() { - return this.domManip(arguments, true, false, function(elem){ - if (this.nodeType == 1) - this.appendChild( elem ); - }); - }, - - prepend: function() { - return this.domManip(arguments, true, true, function(elem){ - if (this.nodeType == 1) - this.insertBefore( elem, this.firstChild ); - }); - }, - - before: function() { - return this.domManip(arguments, false, false, function(elem){ - this.parentNode.insertBefore( elem, this ); - }); - }, - - after: function() { - return this.domManip(arguments, false, true, function(elem){ - this.parentNode.insertBefore( elem, this.nextSibling ); - }); - }, - - end: function() { - return this.prevObject || jQuery( [] ); - }, - - find: function( selector ) { - var elems = jQuery.map(this, function(elem){ - return jQuery.find( selector, elem ); - }); - - return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? - jQuery.unique( elems ) : - elems ); - }, - - clone: function( events ) { - // Do the clone - var ret = this.map(function(){ - if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { - // IE copies events bound via attachEvent when - // using cloneNode. Calling detachEvent on the - // clone will also remove the events from the orignal - // In order to get around this, we use innerHTML. - // Unfortunately, this means some modifications to - // attributes in IE that are actually only stored - // as properties will not be copied (such as the - // the name attribute on an input). - var clone = this.cloneNode(true), - container = document.createElement("div"); - container.appendChild(clone); - return jQuery.clean([container.innerHTML])[0]; - } else - return this.cloneNode(true); - }); - - // Need to set the expando to null on the cloned set if it exists - // removeData doesn't work here, IE removes it from the original as well - // this is primarily for IE but the data expando shouldn't be copied over in any browser - var clone = ret.find("*").andSelf().each(function(){ - if ( this[ expando ] != undefined ) - this[ expando ] = null; - }); - - // Copy the events from the original to the clone - if ( events === true ) - this.find("*").andSelf().each(function(i){ - if (this.nodeType == 3) - return; - var events = jQuery.data( this, "events" ); - - for ( var type in events ) - for ( var handler in events[ type ] ) - jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); - }); - - // Return the cloned set - return ret; - }, - - filter: function( selector ) { - return this.pushStack( - jQuery.isFunction( selector ) && - jQuery.grep(this, function(elem, i){ - return selector.call( elem, i ); - }) || - - jQuery.multiFilter( selector, this ) ); - }, - - not: function( selector ) { - if ( selector.constructor == String ) - // test special case where just one selector is passed in - if ( isSimple.test( selector ) ) - return this.pushStack( jQuery.multiFilter( selector, this, true ) ); - else - selector = jQuery.multiFilter( selector, this ); - - var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; - return this.filter(function() { - return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; - }); - }, - - add: function( selector ) { - return !selector ? this : this.pushStack( jQuery.merge( - this.get(), - selector.constructor == String ? - jQuery( selector ).get() : - selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? - selector : [selector] ) ); - }, - - is: function( selector ) { - return selector ? - jQuery.multiFilter( selector, this ).length > 0 : - false; - }, - - hasClass: function( selector ) { - return this.is( "." + selector ); - }, - - val: function( value ) { - if ( value == undefined ) { - - if ( this.length ) { - var elem = this[0]; - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type == "select-one"; - - // Nothing was selected - if ( index < 0 ) - return null; - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - if ( option.selected ) { - // Get the specifc value for the option - value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; - - // We don't need an array for one selects - if ( one ) - return value; - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - - // Everything else, we just grab the value - } else - return (this[0].value || "").replace(/\r/g, ""); - - } - - return undefined; - } - - return this.each(function(){ - if ( this.nodeType != 1 ) - return; - - if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) - this.checked = (jQuery.inArray(this.value, value) >= 0 || - jQuery.inArray(this.name, value) >= 0); - - else if ( jQuery.nodeName( this, "select" ) ) { - var values = value.constructor == Array ? - value : - [ value ]; - - jQuery( "option", this ).each(function(){ - this.selected = (jQuery.inArray( this.value, values ) >= 0 || - jQuery.inArray( this.text, values ) >= 0); - }); - - if ( !values.length ) - this.selectedIndex = -1; - - } else - this.value = value; - }); - }, - - html: function( value ) { - return value == undefined ? - (this.length ? - this[0].innerHTML : - null) : - this.empty().append( value ); - }, - - replaceWith: function( value ) { - return this.after( value ).remove(); - }, - - eq: function( i ) { - return this.slice( i, i + 1 ); - }, - - slice: function() { - return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function(elem, i){ - return callback.call( elem, i, elem ); - })); - }, - - andSelf: function() { - return this.add( this.prevObject ); - }, - - data: function( key, value ){ - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value == null ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - if ( data == undefined && this.length ) - data = jQuery.data( this[0], key ); - - return data == null && parts[1] ? - this.data( parts[0] ) : - data; - } else - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ - jQuery.data( this, key, value ); - }); - }, - - removeData: function( key ){ - return this.each(function(){ - jQuery.removeData( this, key ); - }); - }, - - domManip: function( args, table, reverse, callback ) { - var clone = this.length > 1, elems; - - return this.each(function(){ - if ( !elems ) { - elems = jQuery.clean( args, this.ownerDocument ); - - if ( reverse ) - elems.reverse(); - } - - var obj = this; - - if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) - obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); - - var scripts = jQuery( [] ); - - jQuery.each(elems, function(){ - var elem = clone ? - jQuery( this ).clone( true )[0] : - this; - - // execute all scripts after the elements have been injected - if ( jQuery.nodeName( elem, "script" ) ) { - scripts = scripts.add( elem ); - } else { - // Remove any inner scripts for later evaluation - if ( elem.nodeType == 1 ) - scripts = scripts.add( jQuery( "script", elem ).remove() ); - - // Inject the elements into the document - callback.call( obj, elem ); - } - }); - - scripts.each( evalScript ); - }); - } -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.prototype.init.prototype = jQuery.prototype; - -function evalScript( i, elem ) { - if ( elem.src ) - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - - else - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - - if ( elem.parentNode ) - elem.parentNode.removeChild( elem ); -} - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; - - // Handle a deep copy situation - if ( target.constructor == Boolean ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target != "object" && typeof target != "function" ) - target = {}; - - // extend jQuery itself if only one argument is passed - if ( length == 1 ) { - target = this; - i = 0; - } - - for ( ; i < length; i++ ) - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) - // Extend the base object - for ( var name in options ) { - // Prevent never-ending loop - if ( target === options[ name ] ) - continue; - - // Recurse if we're merging object values - if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) - target[ name ] = jQuery.extend( target[ name ], options[ name ] ); - - // Don't bring in undefined values - else if ( options[ name ] != undefined ) - target[ name ] = options[ name ]; - - } - - // Return the modified object - return target; -}; - -var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; - -// exclude the following css properties to add px -var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; - -jQuery.extend({ - noConflict: function( deep ) { - window.$ = _$; - - if ( deep ) - window.jQuery = _jQuery; - - return jQuery; - }, - - // See test/unit/core.js for details concerning this function. - isFunction: function( fn ) { - return !!fn && typeof fn != "string" && !fn.nodeName && - fn.constructor != Array && /function/i.test( fn + "" ); - }, - - // check if an element is in a (or is an) XML document - isXMLDoc: function( elem ) { - return elem.documentElement && !elem.body || - elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; - }, - - // Evalulates a script in a global context - globalEval: function( data ) { - data = jQuery.trim( data ); - - if ( data ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - if ( jQuery.browser.msie ) - script.text = data; - else - script.appendChild( document.createTextNode( data ) ); - - head.appendChild( script ); - head.removeChild( script ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); - }, - - cache: {}, - - data: function( elem, name, data ) { - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ]; - - // Compute a unique ID for the element - if ( !id ) - id = elem[ expando ] = ++uuid; - - // Only generate the data cache if we're - // trying to access or manipulate it - if ( name && !jQuery.cache[ id ] ) - jQuery.cache[ id ] = {}; - - // Prevent overriding the named cache with undefined values - if ( data != undefined ) - jQuery.cache[ id ][ name ] = data; - - // Return the named cache data, or the ID for the element - return name ? - jQuery.cache[ id ][ name ] : - id; - }, - - removeData: function( elem, name ) { - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ]; - - // If we want to remove a specific section of the element's data - if ( name ) { - if ( jQuery.cache[ id ] ) { - // Remove the section of cache data - delete jQuery.cache[ id ][ name ]; - - // If we've removed all the data, remove the element's cache - name = ""; - - for ( name in jQuery.cache[ id ] ) - break; - - if ( !name ) - jQuery.removeData( elem ); - } - - // Otherwise, we want to remove all of the element's data - } else { - // Clean up the element expando - try { - delete elem[ expando ]; - } catch(e){ - // IE has trouble directly removing the expando - // but it's ok with using removeAttribute - if ( elem.removeAttribute ) - elem.removeAttribute( expando ); - } - - // Completely remove the data cache - delete jQuery.cache[ id ]; - } - }, - - // args is for internal usage only - each: function( object, callback, args ) { - if ( args ) { - if ( object.length == undefined ) { - for ( var name in object ) - if ( callback.apply( object[ name ], args ) === false ) - break; - } else - for ( var i = 0, length = object.length; i < length; i++ ) - if ( callback.apply( object[ i ], args ) === false ) - break; - - // A special, fast, case for the most common use of each - } else { - if ( object.length == undefined ) { - for ( var name in object ) - if ( callback.call( object[ name ], name, object[ name ] ) === false ) - break; - } else - for ( var i = 0, length = object.length, value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} - } - - return object; - }, - - prop: function( elem, value, type, i, name ) { - // Handle executable functions - if ( jQuery.isFunction( value ) ) - value = value.call( elem, i ); - - // Handle passing in a number to a CSS property - return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? - value + "px" : - value; - }, - - className: { - // internal only, use addClass("class") - add: function( elem, classNames ) { - jQuery.each((classNames || "").split(/\s+/), function(i, className){ - if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) - elem.className += (elem.className ? " " : "") + className; - }); - }, - - // internal only, use removeClass("class") - remove: function( elem, classNames ) { - if (elem.nodeType == 1) - elem.className = classNames != undefined ? - jQuery.grep(elem.className.split(/\s+/), function(className){ - return !jQuery.className.has( classNames, className ); - }).join(" ") : - ""; - }, - - // internal only, use is(".class") - has: function( elem, className ) { - return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; - } - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations - swap: function( elem, options, callback ) { - var old = {}; - // Remember the old values, and insert the new ones - for ( var name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - callback.call( elem ); - - // Revert the old values - for ( var name in options ) - elem.style[ name ] = old[ name ]; - }, - - css: function( elem, name, force ) { - if ( name == "width" || name == "height" ) { - var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; - - function getWH() { - val = name == "width" ? elem.offsetWidth : elem.offsetHeight; - var padding = 0, border = 0; - jQuery.each( which, function() { - padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; - border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; - }); - val -= Math.round(padding + border); - } - - if ( jQuery(elem).is(":visible") ) - getWH(); - else - jQuery.swap( elem, props, getWH ); - - return Math.max(0, val); - } - - return jQuery.curCSS( elem, name, force ); - }, - - curCSS: function( elem, name, force ) { - var ret; - - // A helper method for determining if an element's values are broken - function color( elem ) { - if ( !jQuery.browser.safari ) - return false; - - var ret = document.defaultView.getComputedStyle( elem, null ); - return !ret || ret.getPropertyValue("color") == ""; - } - - // We need to handle opacity special in IE - if ( name == "opacity" && jQuery.browser.msie ) { - ret = jQuery.attr( elem.style, "opacity" ); - - return ret == "" ? - "1" : - ret; - } - // Opera sometimes will give the wrong display answer, this fixes it, see #2037 - if ( jQuery.browser.opera && name == "display" ) { - var save = elem.style.outline; - elem.style.outline = "0 solid black"; - elem.style.outline = save; - } - - // Make sure we're using the right name for getting the float value - if ( name.match( /float/i ) ) - name = styleFloat; - - if ( !force && elem.style && elem.style[ name ] ) - ret = elem.style[ name ]; - - else if ( document.defaultView && document.defaultView.getComputedStyle ) { - - // Only "float" is needed here - if ( name.match( /float/i ) ) - name = "float"; - - name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); - - var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); - - if ( getComputedStyle && !color( elem ) ) - ret = getComputedStyle.getPropertyValue( name ); - - // If the element isn't reporting its values properly in Safari - // then some display: none elements are involved - else { - var swap = [], stack = []; - - // Locate all of the parent display: none elements - for ( var a = elem; a && color(a); a = a.parentNode ) - stack.unshift(a); - - // Go through and make them visible, but in reverse - // (It would be better if we knew the exact display type that they had) - for ( var i = 0; i < stack.length; i++ ) - if ( color( stack[ i ] ) ) { - swap[ i ] = stack[ i ].style.display; - stack[ i ].style.display = "block"; - } - - // Since we flip the display style, we have to handle that - // one special, otherwise get the value - ret = name == "display" && swap[ stack.length - 1 ] != null ? - "none" : - ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; - - // Finally, revert the display styles back - for ( var i = 0; i < swap.length; i++ ) - if ( swap[ i ] != null ) - stack[ i ].style.display = swap[ i ]; - } - - // We should always get a number back from opacity - if ( name == "opacity" && ret == "" ) - ret = "1"; - - } else if ( elem.currentStyle ) { - var camelCase = name.replace(/\-(\w)/g, function(all, letter){ - return letter.toUpperCase(); - }); - - ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { - // Remember the original values - var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; - - // Put in the new values to get a computed value out - elem.runtimeStyle.left = elem.currentStyle.left; - elem.style.left = ret || 0; - ret = elem.style.pixelLeft + "px"; - - // Revert the changed values - elem.style.left = style; - elem.runtimeStyle.left = runtimeStyle; - } - } - - return ret; - }, - - clean: function( elems, context ) { - var ret = []; - context = context || document; - // !context.createElement fails in IE with an error but returns typeof 'object' - if (typeof context.createElement == 'undefined') - context = context.ownerDocument || context[0] && context[0].ownerDocument || document; - - jQuery.each(elems, function(i, elem){ - if ( !elem ) - return; - - if ( elem.constructor == Number ) - elem = elem.toString(); - - // Convert html string into DOM nodes - if ( typeof elem == "string" ) { - // Fix "XHTML"-style tags in all browsers - elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ - return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? - all : - front + ">"; - }); - - // Trim whitespace, otherwise indexOf won't work as expected - var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); - - var wrap = - // option or optgroup - !tags.indexOf("", "" ] || - - !tags.indexOf("", "" ] || - - tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && - [ 1, "", "
    " ] || - - !tags.indexOf("", "" ] || - - // matched above - (!tags.indexOf("", "" ] || - - !tags.indexOf("", "" ] || - - // IE can't serialize and \ No newline at end of file From cba114c8506d5740ca1df00711a46b6c303e2205 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 7 Dec 2009 11:29:18 -0800 Subject: [PATCH 50/70] Add a "grandfather" creation date cutoff to RequireValidatedEmail plugin; will allow us to use this for temporary emergency moderation of new registrations without affecting older accounts. --- plugins/RequireValidatedEmail/README | 21 ++++++++ .../RequireValidatedEmailPlugin.php | 52 ++++++++++++++++++- 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 plugins/RequireValidatedEmail/README diff --git a/plugins/RequireValidatedEmail/README b/plugins/RequireValidatedEmail/README new file mode 100644 index 0000000000..ccd94d271d --- /dev/null +++ b/plugins/RequireValidatedEmail/README @@ -0,0 +1,21 @@ +This plugin disables posting for accounts that do not have a +validated email address. + +Example: + + addPlugin('RequireValidatedEmail'); + +If you don't want to apply the validationr equirement to existing +accounts, you can specify a cutoff date to grandfather in users +registered prior to that timestamp. + + addPlugin('RequireValidatedEmail', + array('grandfatherCutoff' => 'Dec 7, 2009'); + + +Todo: +* make email field required on registration form +* add a more visible indicator that validation is still outstanding +* localization for UI strings +* test with XMPP, API posting + diff --git a/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php b/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php index 4806538a04..04adbf00ee 100644 --- a/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php +++ b/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php @@ -21,7 +21,7 @@ * * @category Plugin * @package StatusNet - * @author Craig Andrews + * @author Craig Andrews , Brion Vibber * @copyright 2009 Craig Andrews http://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/ @@ -33,20 +33,68 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { class RequireValidatedEmailPlugin extends Plugin { + // Users created before this time will be grandfathered in + // without the validation requirement. + public $grandfatherCutoff=null; + function __construct() { parent::__construct(); } + /** + * Event handler for notice saves; rejects the notice + * if user's address isn't validated. + * + * @param Notice $notice + * @return bool hook result code + */ function onStartNoticeSave($notice) { $user = User::staticGet('id', $notice->profile_id); if (!empty($user)) { // it's a remote notice - if (empty($user->email)) { + if (!$this->validated($user)) { throw new ClientException(_("You must validate your email address before posting.")); } } return true; } + + /** + * Check if a user has a validated email address or has been + * otherwise grandfathered in. + * + * @param User $user + * @return bool + */ + 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); + } + + /** + * Check if a user was created before the grandfathering cutoff. + * If so, we won't need to check for validation. + * + * @param User $user + * @return bool + */ + protected function grandfathered($user) + { + if ($this->grandfatherCutoff) { + $created = strtotime($user->created . " GMT"); + $cutoff = strtotime($this->grandfatherCutoff); + if ($created < $cutoff) { + return true; + } + } + return false; + } } From 4eceef0dbef02f5254a7c2f901aae5b648024f30 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 7 Dec 2009 11:34:03 -0800 Subject: [PATCH 51/70] Grand ALL permissions to the DB user when setting up a new status.net site. --- scripts/setup_status_network.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/setup_status_network.sh b/scripts/setup_status_network.sh index d40d4724f2..777711fb55 100755 --- a/scripts/setup_status_network.sh +++ b/scripts/setup_status_network.sh @@ -19,8 +19,8 @@ done mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB << ENDOFCOMMANDS -GRANT INSERT,SELECT,UPDATE,DELETE ON $database.* TO '$username'@'localhost' IDENTIFIED BY '$password'; -GRANT INSERT,SELECT,UPDATE,DELETE ON $database.* TO '$username'@'%' IDENTIFIED BY '$password'; +GRANT ALL ON $database.* TO '$username'@'localhost' IDENTIFIED BY '$password'; +GRANT ALL ON $database.* TO '$username'@'%' IDENTIFIED BY '$password'; INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created) VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now()); From 684e65e3dea09fd8179f86d846b82540cc44e5dc Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Mon, 7 Dec 2009 14:53:17 -0500 Subject: [PATCH 52/70] Cleanup of recaptcha plugin remove xhtml hack --- plugins/Recaptcha/RecaptchaPlugin.php | 32 ++++++++------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/plugins/Recaptcha/RecaptchaPlugin.php b/plugins/Recaptcha/RecaptchaPlugin.php index 3a510ef11c..db118dbb81 100644 --- a/plugins/Recaptcha/RecaptchaPlugin.php +++ b/plugins/Recaptcha/RecaptchaPlugin.php @@ -44,11 +44,11 @@ class RecaptchaPlugin extends Plugin var $ssl; function onInitializePlugin(){ - if(!isset($this->private_key)){ - common_log(LOG_ERR, "Recaptcha: Must specify private_key in config.php"); + if(!isset($this->private_key)) { + common_log(LOG_ERR, 'Recaptcha: Must specify private_key in config.php'); } - if(!isset($this->public_key)){ - common_log(LOG_ERR, "Recaptcha: Must specify public_key in config.php"); + if(!isset($this->public_key)) { + common_log(LOG_ERR, 'Recaptcha: Must specify public_key in config.php'); } } @@ -59,25 +59,13 @@ class RecaptchaPlugin extends Plugin return false; } - function onStartShowHTML($action) - { - //XXX: Horrible hack to make Safari, FF2, and Chrome work with - //reChapcha. reChapcha beaks xhtml strict - header('Content-Type: text/html'); - - $action->extraHeaders(); - - $action->startXML('html'); - - $action->style('#recaptcha_area{float:left;}'); - return false; - } function onEndRegistrationFormData($action) { + $action->style('#recaptcha_area{float:left;}'); $action->elementStart('li'); $action->raw(''); - if($this->checkssl() === true){ + if($this->checkssl() === true) { $action->raw(recaptcha_get_html($this->public_key), null, true); } else { $action->raw(recaptcha_get_html($this->public_key)); @@ -93,11 +81,9 @@ class RecaptchaPlugin extends Plugin $action->trimmed('recaptcha_challenge_field'), $action->trimmed('recaptcha_response_field')); - if (!$resp->is_valid) - { - if($this->display_errors) - { - $action->showForm ("(reCAPTCHA said: " . $resp->error . ")"); + if (!$resp->is_valid) { + if($this->display_errors) { + $action->showForm ("(reCAPTCHA error: " . $resp->error . ")"); } $action->showForm("Captcha does not match!"); return false; From 66bfb2f0e9ba5a1b1f70bbfbb53e9d5eb07f406f Mon Sep 17 00:00:00 2001 From: Siebrand Mazeland Date: Mon, 7 Dec 2009 22:37:59 +0100 Subject: [PATCH 53/70] Localisation updates for !StatusNet from !translatewiki.net !sntrans --- locale/ar/LC_MESSAGES/statusnet.po | 41 +- locale/bg/LC_MESSAGES/statusnet.po | 41 +- locale/ca/LC_MESSAGES/statusnet.po | 154 ++- locale/cs/LC_MESSAGES/statusnet.po | 41 +- locale/de/LC_MESSAGES/statusnet.po | 116 +- locale/el/LC_MESSAGES/statusnet.po | 41 +- locale/en_GB/LC_MESSAGES/statusnet.po | 41 +- locale/es/LC_MESSAGES/statusnet.po | 73 +- locale/fi/LC_MESSAGES/statusnet.po | 41 +- locale/fr/LC_MESSAGES/statusnet.po | 48 +- locale/ga/LC_MESSAGES/statusnet.po | 41 +- locale/he/LC_MESSAGES/statusnet.po | 41 +- locale/hsb/LC_MESSAGES/statusnet.po | 44 +- locale/is/LC_MESSAGES/statusnet.po | 41 +- locale/it/LC_MESSAGES/statusnet.po | 41 +- locale/ja/LC_MESSAGES/statusnet.po | 41 +- locale/ko/LC_MESSAGES/statusnet.po | 41 +- locale/mk/LC_MESSAGES/statusnet.po | 43 +- locale/nb/LC_MESSAGES/statusnet.po | 41 +- locale/nl/LC_MESSAGES/statusnet.po | 48 +- locale/nn/LC_MESSAGES/statusnet.po | 41 +- locale/pl/LC_MESSAGES/statusnet.po | 56 +- locale/pt/LC_MESSAGES/statusnet.po | 48 +- locale/pt_BR/LC_MESSAGES/statusnet.po | 41 +- locale/ru/LC_MESSAGES/statusnet.po | 48 +- locale/statusnet.po | 37 +- locale/sv/LC_MESSAGES/statusnet.po | 1461 ++++++++++++------------- locale/te/LC_MESSAGES/statusnet.po | 41 +- locale/tr/LC_MESSAGES/statusnet.po | 41 +- locale/uk/LC_MESSAGES/statusnet.po | 48 +- locale/vi/LC_MESSAGES/statusnet.po | 41 +- locale/zh_CN/LC_MESSAGES/statusnet.po | 41 +- locale/zh_TW/LC_MESSAGES/statusnet.po | 41 +- 33 files changed, 1715 insertions(+), 1329 deletions(-) diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index 1cffffcf3d..c7bb7a5e3e 100644 --- a/locale/ar/LC_MESSAGES/statusnet.po +++ b/locale/ar/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:53:47+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:25:58+0000\n" "Language-Team: Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ar\n" "X-Message-Group: out-statusnet\n" @@ -565,7 +565,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1722,11 +1722,11 @@ msgstr "" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "والج بالفعل." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4206,11 +4206,25 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "تعذّر إنشاء الكنى." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "لست مُشتركًا بأي أحد." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "لست مشتركًا بأحد." @@ -4220,11 +4234,11 @@ msgstr[3] "أنت مشترك بهؤلاء الأشخاص:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "لا أحد مشترك بك." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "لا أحد مشترك بك." @@ -4234,11 +4248,11 @@ msgstr[3] "هؤلاء الأشخاص مشتركون بك:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "لست عضوًا في أي مجموعة." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "لست عضوًا في أي مجموعة." @@ -4248,7 +4262,7 @@ msgstr[3] "أنت عضو في هذه المجموعات:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4267,6 +4281,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index e5656cb5f2..e1d9bd7776 100644 --- a/locale/bg/LC_MESSAGES/statusnet.po +++ b/locale/bg/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:53:50+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:01+0000\n" "Language-Team: Bulgarian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: bg\n" "X-Message-Group: out-statusnet\n" @@ -571,7 +571,7 @@ msgstr "Изрязване" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1811,11 +1811,11 @@ msgstr "Грешка при проследяване — потребителя msgid "%s left group %s" msgstr "%s напусна групата %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Вече сте влезли." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Невалидно съдържание на бележка" @@ -4408,39 +4408,53 @@ msgstr "Уведомлението е включено." msgid "Can't turn on notification." msgstr "Грешка при включване на уведомлението." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Грешка при отбелязване като любима." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Не сте абонирани за този профил" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Вече сте абонирани за следните потребители:" msgstr[1] "Вече сте абонирани за следните потребители:" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Грешка при абониране на друг потребител за вас." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Грешка при абониране на друг потребител за вас." msgstr[1] "Грешка при абониране на друг потребител за вас." -#: lib/command.php:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Не членувате в нито една група." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Не членувате в тази група." msgstr[1] "Не членувате в тази група." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4459,6 +4473,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index b4e2f70370..290866b5c8 100644 --- a/locale/ca/LC_MESSAGES/statusnet.po +++ b/locale/ca/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:53:53+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:04+0000\n" "Language-Team: Catalan\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ca\n" "X-Message-Group: out-statusnet\n" @@ -80,6 +80,8 @@ msgstr "Canal dels amics de %s (Atom)" 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 " +"encara." #: actions/all.php:132 #, php-format @@ -201,9 +203,9 @@ msgid "No message text!" msgstr "No hi ha text al missatge!" #: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "És massa llarg. Màxim del missatge és 140 caràcters." +msgstr "És massa llarg. La mida màxima del missatge és %d caràcters." #: actions/apidirectmessagenew.php:146 msgid "Recipient user not found." @@ -256,9 +258,8 @@ msgid "No status found with that ID." msgstr "No s'ha trobat cap estatus amb aquesta ID." #: actions/apifavoritecreate.php:119 -#, fuzzy msgid "This status is already a favorite!" -msgstr "Aquesta nota ja és favorita." +msgstr "Aquest estat ja és un preferit!" #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176 msgid "Could not create favorite." @@ -297,9 +298,8 @@ msgid "Two user ids or screen_names must be supplied." msgstr "Dos ids d'usuari o screen_names has de ser substituïts." #: actions/apifriendshipsshow.php:135 -#, fuzzy msgid "Could not determine source user." -msgstr "No s'ha pogut recuperar la conversa pública." +msgstr "No s'ha pogut determinar l'usuari d'origen." #: actions/apifriendshipsshow.php:143 #, fuzzy @@ -357,9 +357,9 @@ msgstr "Hi ha massa àlies! Màxim %d." #: actions/apigroupcreate.php:264 actions/editgroup.php:224 #: actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "Etiqueta no vàlida: \"%s\"" +msgstr "L'àlies no és vàlid «%s»" #: actions/apigroupcreate.php:273 actions/editgroup.php:228 #: actions/newgroup.php:172 @@ -453,9 +453,8 @@ msgid "Max notice size is %d chars, including attachment URL." msgstr "" #: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy msgid "Unsupported format." -msgstr "Format d'imatge no suportat." +msgstr "El format no està implementat." #: actions/apitimelinefavorites.php:107 #, php-format @@ -578,7 +577,7 @@ msgstr "Crop" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -663,9 +662,8 @@ msgid "Unblock this user" msgstr "Desbloquejar aquest usuari" #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Ja havies bloquejat aquest usuari." +msgstr "Ja heu blocat l'usuari." #: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160 msgid "Block user" @@ -701,9 +699,8 @@ msgid "Failed to save block information." msgstr "Error al guardar la informació del block." #: actions/bookmarklet.php:50 -#, fuzzy msgid "Post to " -msgstr "Foto" +msgstr "Envia a " #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -840,14 +837,13 @@ msgid "Design settings for this StatusNet site." msgstr "Paràmetres de disseny d'aquest lloc StatusNet." #: actions/designadminpanel.php:275 -#, fuzzy msgid "Invalid logo URL." -msgstr "Mida invàlida." +msgstr "L'URL del logotip no és vàlid." #: actions/designadminpanel.php:279 -#, fuzzy, php-format +#, php-format msgid "Theme not available: %s" -msgstr "Aquesta pàgina no està disponible en " +msgstr "El tema no és disponible: %s" #: actions/designadminpanel.php:375 msgid "Change logo" @@ -862,9 +858,8 @@ msgid "Change theme" msgstr "Canvia el tema" #: actions/designadminpanel.php:404 -#, fuzzy msgid "Site theme" -msgstr "Avís del lloc" +msgstr "Tema del lloc" #: actions/designadminpanel.php:405 msgid "Theme for the site." @@ -888,19 +883,19 @@ msgstr "Pots pujar una imatge de logo per al grup." #: actions/designadminpanel.php:457 lib/designsettings.php:139 msgid "On" -msgstr "" +msgstr "Activada" #: actions/designadminpanel.php:473 lib/designsettings.php:155 msgid "Off" -msgstr "" +msgstr "Desactivada" #: actions/designadminpanel.php:474 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "Activa o desactiva la imatge de fons." #: actions/designadminpanel.php:479 lib/designsettings.php:161 msgid "Tile background image" -msgstr "" +msgstr "Posa en mosaic la imatge de fons" #: actions/designadminpanel.php:488 lib/designsettings.php:170 msgid "Change colours" @@ -979,18 +974,17 @@ msgid "Use this form to edit the group." msgstr "Utilitza aquest formulari per editar el grup." #: actions/editgroup.php:201 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "la descripció és massa llarga (màx. 140 caràcters)." +msgstr "la descripció és massa llarga (màx. %d caràcters)." #: actions/editgroup.php:253 msgid "Could not update group." msgstr "No s'ha pogut actualitzar el grup." #: actions/editgroup.php:259 classes/User_group.php:390 -#, fuzzy msgid "Could not create aliases." -msgstr "No es pot crear favorit." +msgstr "No s'han pogut crear els àlies." #: actions/editgroup.php:269 msgid "Options saved." @@ -1260,7 +1254,7 @@ msgstr "Sense adjuncions" #: actions/file.php:51 msgid "No uploaded attachments" -msgstr "" +msgstr "No s'ha pujat cap adjunció" #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1304,9 +1298,8 @@ msgid "No such group." msgstr "No s'ha trobat el grup." #: actions/getfile.php:75 -#, fuzzy msgid "No such file." -msgstr "No existeix aquest avís." +msgstr "No existeix el fitxer." #: actions/getfile.php:79 msgid "Cannot read file." @@ -1835,11 +1828,11 @@ msgstr "No s'ha pogut eliminar l'usuari %s del grup %s" msgid "%s left group %s" msgstr "%s ha abandonat el grup %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Ja estàs connectat." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "El contingut de l'avís és invàlid" @@ -2051,7 +2044,7 @@ msgstr "tipus de contingut " #: actions/oembed.php:160 msgid "Only " -msgstr "" +msgstr "Només " #: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:996 #: lib/api.php:1024 lib/api.php:1134 @@ -2076,7 +2069,7 @@ msgstr "Gestionar altres vàries opcions." #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr " (servei gratuït)" #: actions/othersettings.php:116 msgid "Shorten URLs with" @@ -2093,7 +2086,7 @@ msgstr "Configuració del perfil" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "Mostra o amaga els dissenys de perfil." #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2215,9 +2208,8 @@ msgid "Path" msgstr "Camí" #: actions/pathsadminpanel.php:216 -#, fuzzy msgid "Site path" -msgstr "Avís del lloc" +msgstr "Camí del lloc" #: actions/pathsadminpanel.php:220 msgid "Path to locales" @@ -2233,11 +2225,11 @@ msgstr "Tema" #: actions/pathsadminpanel.php:232 msgid "Theme server" -msgstr "" +msgstr "Servidor dels temes" #: actions/pathsadminpanel.php:236 msgid "Theme path" -msgstr "" +msgstr "Camí dels temes" #: actions/pathsadminpanel.php:240 msgid "Theme directory" @@ -3794,11 +3786,11 @@ msgstr "" #: actions/useradminpanel.php:265 msgid "Sessions" -msgstr "" +msgstr "Sessions" #: actions/useradminpanel.php:270 msgid "Handle sessions" -msgstr "" +msgstr "Gestiona les sessions" #: actions/useradminpanel.php:272 msgid "Whether to handle sessions ourselves." @@ -3828,9 +3820,8 @@ msgstr "" "avisos de ningú, clica \"Cancel·lar\"." #: actions/userauthorization.php:188 -#, fuzzy msgid "License" -msgstr "llicència." +msgstr "Llicència" #: actions/userauthorization.php:209 msgid "Accept" @@ -4038,9 +4029,9 @@ msgid "Could not set group membership." msgstr "No s'ha pogut establir la pertinença d'aquest grup." #: classes/User.php:347 -#, fuzzy, php-format +#, php-format msgid "Welcome to %1$s, @%2$s!" -msgstr "Missatge per a %1$s a %2$s" +msgstr "Us donem la benvinguda a %1$s, @%2$s!" #: lib/accountsettingsaction.php:108 msgid "Change your profile settings" @@ -4110,9 +4101,8 @@ msgid "Connect to services" msgstr "No s'ha pogut redirigir al servidor: %s" #: lib/action.php:440 -#, fuzzy msgid "Change site configuration" -msgstr "Navegació primària del lloc" +msgstr "Canvia la configuració del lloc" #: lib/action.php:444 lib/subgroupnav.php:105 msgid "Invite" @@ -4258,9 +4248,8 @@ msgid "There was a problem with your session token." msgstr "Ha ocorregut algun problema amb la teva sessió." #: lib/adminpanelaction.php:96 -#, fuzzy msgid "You cannot make changes to this site." -msgstr "No pots enviar un missatge a aquest usuari." +msgstr "No podeu fer canvis al lloc." #: lib/adminpanelaction.php:195 #, fuzzy @@ -4400,9 +4389,9 @@ 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:439 -#, fuzzy, php-format +#, php-format msgid "Reply to %s sent" -msgstr "respondre a aquesta nota" +msgstr "S'ha enviat la resposta a %s" #: lib/command.php:441 #, fuzzy @@ -4447,40 +4436,53 @@ msgstr "Notificacions on." msgid "Can't turn on notification." msgstr "No es poden posar en on les notificacions." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "No s'han pogut crear els àlies." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "No estàs subscrit a aquest perfil." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "No pots subscriure a un altre a tu mateix." -#: lib/command.php:616 +#: lib/command.php:647 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:636 -#, fuzzy +#: lib/command.php:667 msgid "You are not a member of any groups." -msgstr "No ets membre d'aquest grup." +msgstr "No sou membre de cap grup." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "No sou un membre del grup." msgstr[1] "No sou un membre del grup." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4499,6 +4501,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -4656,9 +4659,8 @@ msgid "Group" msgstr "Grup" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "Bloquejar" +msgstr "Blocat" #: lib/groupnav.php:102 #, fuzzy, php-format @@ -4770,9 +4772,8 @@ msgid "" msgstr "" #: lib/mailbox.php:227 lib/noticelist.php:452 -#, fuzzy msgid "from" -msgstr " de " +msgstr "de" #: lib/mail.php:172 msgid "Email address confirmation" @@ -5041,11 +5042,11 @@ msgstr "Què tal, %s?" #: lib/noticeform.php:192 msgid "Attach" -msgstr "" +msgstr "Adjunta" #: lib/noticeform.php:196 msgid "Attach a file" -msgstr "" +msgstr "Adjunta un fitxer" #: lib/noticelist.php:403 #, php-format @@ -5262,14 +5263,12 @@ msgid "More..." msgstr "Més…" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Avís del lloc" +msgstr "Silencia" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Bloquejar aquest usuari" +msgstr "Silencia l'usuari" #: lib/subgroupnav.php:83 #, php-format @@ -5349,12 +5348,11 @@ msgstr "Desbloquejar aquest usuari" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "Dessilencia" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "Desbloquejar aquest usuari" +msgstr "Dessilencia l'usuari" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index 8501aacfa8..6d74b17611 100644 --- a/locale/cs/LC_MESSAGES/statusnet.po +++ b/locale/cs/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:53:56+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:08+0000\n" "Language-Team: Czech\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: cs\n" "X-Message-Group: out-statusnet\n" @@ -579,7 +579,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1789,11 +1789,11 @@ msgstr "Nelze vytvořit OpenID z: %s" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Již přihlášen" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Neplatný obsah sdělení" @@ -4373,43 +4373,57 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Nelze uložin informace o obrázku" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Neodeslal jste nám profil" -#: lib/command.php:594 +#: lib/command.php:625 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] "" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Vzdálený odběr" -#: lib/command.php:616 +#: lib/command.php:647 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] "" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Neodeslal jste nám profil" -#: lib/command.php:638 +#: lib/command.php:669 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[2] "" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4428,6 +4442,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po index 2bc9805d97..c1d24f11d2 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:00+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:11+0000\n" "Language-Team: German\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: de\n" "X-Message-Group: out-statusnet\n" @@ -574,7 +574,7 @@ msgstr "Zuschneiden" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1800,11 +1800,11 @@ msgstr "Konnte Benutzer %s aus der Gruppe %s nicht entfernen" msgid "%s left group %s" msgstr "%s hat die Gruppe %s verlassen" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Bereits angemeldet." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Token ungültig oder abgelaufen." @@ -2700,12 +2700,11 @@ msgid "Creative Commons Attribution 3.0" msgstr "" #: actions/register.php:496 -#, fuzzy msgid "" " except this private data: password, email address, IM address, and phone " "number." msgstr "" -"außer folgende private Daten: Passwort, E-Mail, Adresse, IM Adresse, " +"außer folgende private Daten: Passwort, E-Mail-Adresse, IM-Adresse und " "Telefonnummer." #: actions/register.php:537 @@ -2726,28 +2725,27 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Hallo %s, herzlich willkommen auf %%%%site.name%%%%.\n" -"\n" -"Danke für deine Anmeldung, wir hoffen das dir der Service gefällt.\n" -"\n" -"Als nächstes möchtest du eventuell …\n" +"Hallo %s, herzlich willkommen auf %%%%site.name%%%%. Als nächstes möchtest " +"du eventuell …\n" "\n" "* zu [deinem Profil gehen](%s) und deine erste Nachricht schreiben\n" -"* deine [Jabber/GTalk Adresse](%%%%action.imsettings%%%%) eintragen damit du " +"* deine [Jabber/GTalk-Adresse](%%%%action.imsettings%%%%) eintragen damit du " "Nachrichten über diese Dienste schreiben kannst.\n" "* [Leute suchen](%%%%action.peoplesearch%%%%) die du kennst oder die " "gleichen Interessen wie du haben.\n" "* deine [Profildaten ergänzen](%%%%action.profilesettings%%%%) um mehr über " "dich zu veröffentlichen\n" "* die [Dokumentation](%%%%doc.help%%%%) lesen um mehr über weitere Features " -"zu erfahren" +"zu erfahren\n" +"\n" +"Danke für deine Anmeldung, wir hoffen das dir der Service gefällt." #: actions/register.php:561 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" msgstr "" -"(Sie sollten in Kürze eine E-Mail mit der Anleitung zur Überprüfung Ihrer " +"(Du solltest in Kürze eine E-Mail mit der Anleitung zur Überprüfung deiner " "Mailadresse erhalten.)" #: actions/remotesubscribe.php:98 @@ -2797,16 +2795,15 @@ msgid "Invalid profile URL (bad format)" msgstr "Ungültige Profil-URL (falsches Format)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Ungültige Profil-URL (kein YADIS-Dokument)." +msgstr "" +"Ungültige Profil-URL (kein YADIS-Dokument oder ungültige XRDS definiert)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." msgstr "Das ist ein lokales Profil! Zum Abonnieren anmelden." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." msgstr "Konnte keinen Anfrage-Token bekommen." @@ -2834,7 +2831,7 @@ msgstr "Feed der Antworten an %s (RSS 2.0)" #: actions/replies.php:158 #, php-format msgid "Replies feed for %s (Atom)" -msgstr "Feed der Nachrichten von %s" +msgstr "Feed der Nachrichten von %s (Atom)" #: actions/replies.php:198 #, php-format @@ -2858,9 +2855,9 @@ msgid "" msgstr "" #: actions/repliesrss.php:72 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s on %2$s!" -msgstr "Nachricht an %1$s auf %2$s" +msgstr "Antworten an %1$s auf %2$s!" #: actions/sandbox.php:65 actions/unsandbox.php:65 #, fuzzy @@ -2884,17 +2881,17 @@ msgstr "Konnte Favoriten nicht abrufen." #: actions/showfavorites.php:170 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Feed der Freunde von %s" +msgstr "Feed der Freunde von %s (RSS 1.0)" #: actions/showfavorites.php:177 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Feed der Freunde von %s" +msgstr "Feed der Freunde von %s (RSS 2.0)" #: actions/showfavorites.php:184 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "Feed der Freunde von %s" +msgstr "Feed der Freunde von %s (Atom)" #: actions/showfavorites.php:205 msgid "" @@ -2992,9 +2989,8 @@ msgid "Statistics" msgstr "Statistiken" #: actions/showgroup.php:432 -#, fuzzy msgid "Created" -msgstr "Erstellen" +msgstr "Erstellt" #: actions/showgroup.php:448 #, php-format @@ -3007,15 +3003,17 @@ msgid "" msgstr "" #: actions/showgroup.php:454 -#, fuzzy, php-format +#, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" -"**%s** ist eine Benutzergruppe auf %%site.name%%, einem [mikro-blogging] " -"(http://de.wikipedia.org/wiki/Mikro-blogging) Dienst " +"**%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. " #: actions/showgroup.php:482 msgid "Admins" @@ -3044,7 +3042,7 @@ msgid "Notice deleted." msgstr "Nachricht gelöscht." #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" msgstr "Nachrichten, die mit %s getagt sind" @@ -3106,14 +3104,15 @@ msgid "" msgstr "" #: actions/showstream.php:239 -#, fuzzy, php-format +#, php-format msgid "" "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** hat ein Konto auf %%site.name%%, einem [mikro-blogging] (http://de." -"wikipedia.org/wiki/Mikro-blogging) Dienst " +"**%s** hat ein Konto auf %%%%site.name%%%%, einem [Mikro-blogging-Dienst]" +"(http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der Freien " +"Software [StatusNet](http://status.net/). " #: actions/silence.php:65 actions/unsilence.php:65 #, fuzzy @@ -3134,14 +3133,13 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:155 -#, fuzzy msgid "You must have a valid contact email address" -msgstr "Ungültige E-Mail-Adresse" +msgstr "Du musst eine gültige E-Mail-Adresse haben" #: actions/siteadminpanel.php:173 #, php-format msgid "Unknown language \"%s\"" -msgstr "Unbekannte Sprache "%s"" +msgstr "Unbekannte Sprache „%s“" #: actions/siteadminpanel.php:180 msgid "Invalid snapshot report URL." @@ -3388,7 +3386,7 @@ msgstr "SMS ist nicht verfügbar." #: actions/smssettings.php:112 msgid "Current confirmed SMS-enabled phone number." -msgstr "Aktuelle für den SMS-Dienst bestätigte Telefon-Nummer." +msgstr "Aktuelle für den SMS-Dienst bestätigte Telefonnummer." #: actions/smssettings.php:123 msgid "Awaiting confirmation on this phone number." @@ -3777,7 +3775,6 @@ msgid "Authorize subscription" msgstr "Abonnement bestätigen" #: 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, " @@ -3785,7 +3782,7 @@ msgid "" msgstr "" "Bitte überprüfe diese Angaben, um sicher zu gehen, dass du die Nachrichten " "dieses Nutzers abonnieren möchtest. Wenn du das nicht wolltest, klicke auf " -"\"Abbrechen\"." +"„Abbrechen“." #: actions/userauthorization.php:188 msgid "License" @@ -3885,7 +3882,7 @@ msgstr "Keine ID." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" -msgstr "Profil Design Einstellungen" +msgstr "Profil-Design-Einstellungen" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4016,7 +4013,7 @@ msgstr "Ändere dein Passwort" #: lib/accountsettingsaction.php:120 msgid "Change email handling" -msgstr "Ändere die E-Mail Verarbeitung" +msgstr "Ändere die E-Mail-Verarbeitung" #: lib/accountsettingsaction.php:124 #, fuzzy @@ -4185,7 +4182,7 @@ msgid "" "s, available under the [GNU Affero General Public License](http://www.fsf." "org/licensing/licenses/agpl-3.0.html)." msgstr "" -" Es wird mit der Microbloggingsoftware [StatusNet](http://status.net/) " +"Es wird mit der Microbloggingsoftware [StatusNet](http://status.net/) " "(Version %s) betrieben, die unter der [GNU Affero General Public License]" "(http://www.fsf.org/licensing/licenses/agpl-3.0.html) erhältlich ist." @@ -4407,40 +4404,54 @@ msgstr "Benachrichtigung aktiviert." msgid "Can't turn on notification." msgstr "Konnte Benachrichtigung nicht aktivieren." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Konnte keinen Favoriten erstellen." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Du hast dieses Profil nicht abonniert." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Du hast diese Benutzer bereits abonniert:" msgstr[1] "Du hast diese Benutzer bereits abonniert:" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Die Gegenseite konnte Dich nicht abonnieren." -#: lib/command.php:616 +#: lib/command.php:647 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." -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Du bist kein Mitglied dieser Gruppe." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Du bist kein Mitglied dieser Gruppe." msgstr[1] "Du bist kein Mitglied dieser Gruppe." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4459,6 +4470,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -4610,10 +4622,10 @@ msgid "Description" msgstr "Beschreibung" #: lib/groupeditform.php:179 -#, fuzzy msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "Ort der Gruppe, optional, z.B. \"Stadt, Gebiet (oder Region), Land\"" +msgstr "" +"Ort der Gruppe, optional, beispielsweise „Stadt, Gebiet (oder Region), Land“" #: lib/groupeditform.php:187 #, php-format diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 07384974dc..d6142aaa76 100644 --- a/locale/el/LC_MESSAGES/statusnet.po +++ b/locale/el/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:03+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:14+0000\n" "Language-Team: Greek\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: el\n" "X-Message-Group: out-statusnet\n" @@ -574,7 +574,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1771,11 +1771,11 @@ msgstr "" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Ήδη συνδεδεμένος." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4318,40 +4318,54 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Αδύνατη η αποθήκευση του προφίλ." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." msgstr[1] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." msgstr[1] "Δεν επιτρέπεται να κάνεις συνδρομητές του λογαριασμού σου άλλους." -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Ομάδες με τα περισσότερα μέλη" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ομάδες με τα περισσότερα μέλη" msgstr[1] "Ομάδες με τα περισσότερα μέλη" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4370,6 +4384,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index d31e8a7ed6..782a5ec0ac 100644 --- a/locale/en_GB/LC_MESSAGES/statusnet.po +++ b/locale/en_GB/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:06+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:19+0000\n" "Language-Team: British English\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: en-gb\n" "X-Message-Group: out-statusnet\n" @@ -568,7 +568,7 @@ msgstr "Crop" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1805,11 +1805,11 @@ msgstr "Could not remove user %s to group %s" msgid "%s left group %s" msgstr "%s left group %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Already logged in." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Invalid notice content" @@ -4392,40 +4392,54 @@ msgstr "Notification on." msgid "Can't turn on notification." msgstr "Can't turn on notification." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Could not create aliases" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "You are not subscribed to that profile." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Could not subscribe other to you." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "You are not a member of that group." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4444,6 +4458,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index 2493b24bc6..871040c9ae 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:09+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:23+0000\n" "Language-Team: Spanish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: es\n" "X-Message-Group: out-statusnet\n" @@ -189,9 +189,8 @@ msgid "Could not save profile." msgstr "No se pudo guardar el perfil." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "No se pudo actualizar el usuario." +msgstr "¡No puedes bloquearte a tí mismo!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -219,9 +218,9 @@ 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/apidirectmessage.php:89 -#, fuzzy, php-format +#, php-format msgid "Direct messages from %s" -msgstr "Mensajes directos a %s" +msgstr "Mensajes directos de %s" #: actions/apidirectmessage.php:93 #, php-format @@ -261,18 +260,16 @@ msgid "No status found with that ID." msgstr "No se encontró estado para ese ID" #: actions/apifavoritecreate.php:119 -#, fuzzy msgid "This status is already a favorite!" -msgstr "¡Este aviso ya está en favoritos!" +msgstr "¡Este status ya está en favoritos!" #: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176 msgid "Could not create favorite." msgstr "No se pudo crear favorito." #: actions/apifavoritedestroy.php:122 -#, fuzzy msgid "That status is not a favorite!" -msgstr "¡Este aviso no es un favorito!" +msgstr "¡Este status no es un favorito!" #: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 msgid "Could not delete favorite." @@ -288,27 +285,24 @@ msgid "Could not follow user: %s is already on your list." msgstr "No puede seguir al usuario: %s ya esta en su lista." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "No puede seguir al usuario. Usuario no encontrado" +msgstr "No se pudo dejar de seguir al usuario. Usuario no encontrado" #: actions/apifriendshipsdestroy.php:120 msgid "You cannot unfollow yourself!" -msgstr "" +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/apifriendshipsshow.php:135 -#, fuzzy msgid "Could not determine source user." -msgstr "No se pudo acceder a corriente pública." +msgstr "No se pudo determinar el usuario fuente." #: actions/apifriendshipsshow.php:143 -#, fuzzy msgid "Could not find target user." -msgstr "No se pudo encontrar ningún estado." +msgstr "No se pudo encontrar ningún usuario de destino." #: actions/apigroupcreate.php:164 actions/editgroup.php:182 #: actions/newgroup.php:126 actions/profilesettings.php:208 @@ -316,7 +310,7 @@ msgstr "No se pudo encontrar ningún estado." msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "El apodo debe tener solamente letras minúsculas y números y no puede tener " -"espacios. " +"espacios." #: actions/apigroupcreate.php:173 actions/editgroup.php:186 #: actions/newgroup.php:130 actions/profilesettings.php:231 @@ -343,9 +337,9 @@ msgid "Full name is too long (max 255 chars)." msgstr "Tu nombre es demasiado largo (max. 255 carac.)" #: actions/apigroupcreate.php:213 -#, fuzzy, php-format +#, php-format msgid "Description is too long (max %d chars)." -msgstr "Descripción es demasiado larga (máx. 140 caracteres)." +msgstr "La descripción es demasiado larga (máx. %d caracteres)." #: actions/apigroupcreate.php:224 actions/editgroup.php:204 #: actions/newgroup.php:148 actions/profilesettings.php:225 @@ -357,7 +351,7 @@ msgstr "La ubicación es demasiado larga (máx. 255 caracteres)." #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." -msgstr "" +msgstr "¡Muchos seudónimos! El máximo es %d." #: actions/apigroupcreate.php:264 actions/editgroup.php:224 #: actions/newgroup.php:168 @@ -582,7 +576,7 @@ msgstr "Cortar" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1854,11 +1848,11 @@ msgstr "No se pudo eliminar a usuario %s de grupo %s" msgid "%s left group %s" msgstr "%s dejó grupo %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Ya estás conectado." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "El contenido del aviso es inválido" @@ -4512,40 +4506,54 @@ msgstr "Notificación activada." msgid "Can't turn on notification." msgstr "No se puede activar notificación." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "No se pudo crear favorito." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "No estás suscrito a ese perfil." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "No se pudo suscribir otro a ti." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "No eres miembro de ese grupo" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "No eres miembro de este grupo." msgstr[1] "No eres miembro de este grupo." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4564,6 +4572,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index dbc8f1f4b3..c1b9febfe2 100644 --- a/locale/fi/LC_MESSAGES/statusnet.po +++ b/locale/fi/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:12+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:26+0000\n" "Language-Team: Finnish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fi\n" "X-Message-Group: out-statusnet\n" @@ -578,7 +578,7 @@ msgstr "Rajaa" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1813,11 +1813,11 @@ msgstr "Ei voitu poistaa käyttäjää %s ryhmästä %s" msgid "%s left group %s" msgstr "%s erosi ryhmästä %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Olet jo kirjautunut sisään." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Päivityksen sisältö ei kelpaa" @@ -4440,40 +4440,54 @@ msgstr "Ilmoitukset päällä." msgid "Can't turn on notification." msgstr "Ilmoituksia ei voi pistää päälle." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Ei voitu lisätä aliasta." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Et ole tilannut tämän käyttäjän päivityksiä." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Toista ei voitu asettaa tilaamaan sinua." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Sinä et kuulu tähän ryhmään." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4492,6 +4506,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index a3e47142e6..d667087954 100644 --- a/locale/fr/LC_MESSAGES/statusnet.po +++ b/locale/fr/LC_MESSAGES/statusnet.po @@ -13,12 +13,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:15+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:29+0000\n" "Language-Team: French\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fr\n" "X-Message-Group: out-statusnet\n" @@ -197,9 +197,8 @@ msgid "Could not save profile." msgstr "Impossible d’enregistrer le profil." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Vous ne pouvez pas ne plus vous suivre vous-même !" +msgstr "Vous ne pouvez pas vous bloquer vous-même !" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -588,7 +587,7 @@ msgstr "Recadrer" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1841,11 +1840,11 @@ msgstr "Impossible de retirer l’utilisateur %s du groupe %s" msgid "%s left group %s" msgstr "%s a quitté le groupe %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Déjà connecté." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Jeton invalide ou expiré." @@ -4492,37 +4491,52 @@ msgstr "Avertissements activés." msgid "Can't turn on notification." msgstr "Impossible d’activer les avertissements." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Impossible de créer les alias." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "Vous n'êtes pas abonné(e) à personne." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "Personne ne s'est abonné à vous." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Vous n'êtes pas membre d'aucun groupe." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 +#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4541,6 +4555,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -5465,9 +5480,8 @@ msgid "Not subscribed!" msgstr "Pas abonné !" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Impossible de cesser l’abonnement" +msgstr "Impossible de supprimer l’abonnement à soi-même." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index d809f92341..b3d15c8a47 100644 --- a/locale/ga/LC_MESSAGES/statusnet.po +++ b/locale/ga/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:19+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:33+0000\n" "Language-Team: Irish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ga\n" "X-Message-Group: out-statusnet\n" @@ -585,7 +585,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1857,11 +1857,11 @@ msgstr "Non podes seguir a este usuario: o Usuario non se atopa." msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Sesión xa iniciada" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Contido do chío inválido" @@ -4533,12 +4533,26 @@ msgstr "Notificación habilitada." msgid "Can't turn on notification." msgstr "Non se pode activar a notificación." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Non se puido crear o favorito." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Non estás suscrito a ese perfil" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Xa estas suscrito a estes usuarios:" @@ -4547,12 +4561,12 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Outro usuario non se puido suscribir a ti." -#: lib/command.php:616 +#: lib/command.php:647 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." @@ -4561,12 +4575,12 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Non estás suscrito a ese perfil" -#: lib/command.php:638 +#: lib/command.php:669 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" @@ -4575,7 +4589,7 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:652 +#: lib/command.php:683 #, fuzzy msgid "" "Commands:\n" @@ -4595,6 +4609,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index 8ff8672800..a6d463d533 100644 --- a/locale/he/LC_MESSAGES/statusnet.po +++ b/locale/he/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:22+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:36+0000\n" "Language-Team: Hebrew\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: he\n" "X-Message-Group: out-statusnet\n" @@ -579,7 +579,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1802,11 +1802,11 @@ msgstr "נכשלה יצירת OpenID מתוך: %s" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "כבר מחובר." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "תוכן ההודעה לא חוקי" @@ -4380,40 +4380,54 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "שמירת מידע התמונה נכשל" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "לא שלחנו אלינו את הפרופיל הזה" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "לא שלחנו אלינו את הפרופיל הזה" msgstr[1] "לא שלחנו אלינו את הפרופיל הזה" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "הרשמה מרוחקת" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "הרשמה מרוחקת" msgstr[1] "הרשמה מרוחקת" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "לא שלחנו אלינו את הפרופיל הזה" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "לא שלחנו אלינו את הפרופיל הזה" msgstr[1] "לא שלחנו אלינו את הפרופיל הזה" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4432,6 +4446,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index 6a0ff37b46..9bea1de8fc 100644 --- a/locale/hsb/LC_MESSAGES/statusnet.po +++ b/locale/hsb/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:27+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:39+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: hsb\n" "X-Message-Group: out-statusnet\n" @@ -180,9 +180,8 @@ msgid "Could not save profile." msgstr "Profil njeje so składować dał." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Njemóžeš wužiwarjow wušmórnyć." +msgstr "Njemóžeš so samoho blokować." #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -564,7 +563,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1726,11 +1725,11 @@ msgstr "" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Hižo přizjewjeny." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4191,11 +4190,25 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Aliasy njejsu so dali wutworić." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Sy tutu wosobu abonował:" @@ -4203,11 +4216,11 @@ msgstr[1] "Sy tutej wosobje abonował:" msgstr[2] "Sy tute wosoby abonował:" msgstr[3] "Sy tute wosoby abonował:" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Tuta wosoba je će abonowała:" @@ -4215,11 +4228,11 @@ 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:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Sy čłon tuteje skupiny:" @@ -4227,7 +4240,7 @@ msgstr[1] "Sy čłon tuteju skupinow:" msgstr[2] "Sy čłon tutych skupinow:" msgstr[3] "Sy čłon tutych skupinow:" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4246,6 +4259,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index e27212ed11..16e4b7435a 100644 --- a/locale/is/LC_MESSAGES/statusnet.po +++ b/locale/is/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:31+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:42+0000\n" "Language-Team: Icelandic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: is\n" "X-Message-Group: out-statusnet\n" @@ -574,7 +574,7 @@ msgstr "Skera af" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1802,11 +1802,11 @@ msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s" msgid "%s left group %s" msgstr "%s gekk úr hópnum %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Þú hefur nú þegar skráð þig inn." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Ótækt bablinnihald" @@ -4401,40 +4401,54 @@ msgstr "Tilkynningar á." msgid "Can't turn on notification." msgstr "Get ekki kveikt á tilkynningum." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Gat ekki búið til uppáhald." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Þú ert ekki áskrifandi." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Gat ekki leyft öðrum að gerast áskrifandi að þér." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Þú ert ekki meðlimur í þessum hópi." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4453,6 +4467,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index da538e1a27..b86ca75b94 100644 --- a/locale/it/LC_MESSAGES/statusnet.po +++ b/locale/it/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:34+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:45+0000\n" "Language-Team: Italian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: it\n" "X-Message-Group: out-statusnet\n" @@ -582,7 +582,7 @@ msgstr "Ritaglia" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1847,11 +1847,11 @@ msgstr "Impossibile rimuovere l'utente %s dal gruppo %s" msgid "%s left group %s" msgstr "%s ha lasciato il gruppo %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Accesso già effettuato." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Contenuto del messaggio non valido" @@ -4471,40 +4471,54 @@ msgstr "Notifiche attivate." msgid "Can't turn on notification." msgstr "Impossibile attivare le notifiche." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Impossibile creare preferito." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Non sei abbonato a quel profilo." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Sei già abbonato a questi utenti:" msgstr[1] "Sei già abbonato a questi utenti:" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Impossibile abbonare altri a te." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Impossibile abbonare altri a te." msgstr[1] "Impossibile abbonare altri a te." -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Non sei un membro di quel gruppo." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Non sei un membro di quel gruppo." msgstr[1] "Non sei un membro di quel gruppo." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4523,6 +4537,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index 43f6fcec79..74baa8e281 100644 --- a/locale/ja/LC_MESSAGES/statusnet.po +++ b/locale/ja/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:37+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:48+0000\n" "Language-Team: Japanese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ja\n" "X-Message-Group: out-statusnet\n" @@ -586,7 +586,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1835,11 +1835,11 @@ msgstr "OpenIDを作成できません : %s" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "既にログインしています。" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "不正な通知内容" @@ -4422,37 +4422,51 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "アバターを保存できません" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "そのプロファイルは送信されていません。" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "そのプロファイルは送信されていません。" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "リモートサブスクライブ" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "リモートサブスクライブ" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "そのプロファイルは送信されていません。" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "そのプロファイルは送信されていません。" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4471,6 +4485,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index 2de8e46d53..05b20ed918 100644 --- a/locale/ko/LC_MESSAGES/statusnet.po +++ b/locale/ko/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:40+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:51+0000\n" "Language-Team: Korean\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ko\n" "X-Message-Group: out-statusnet\n" @@ -581,7 +581,7 @@ msgstr "자르기" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1828,11 +1828,11 @@ msgstr "그룹 %s에서 %s 사용자를 제거할 수 없습니다." msgid "%s left group %s" msgstr "%s가 그룹%s를 떠났습니다." -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "이미 로그인 하셨습니다." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "옳지 않은 통지 내용" @@ -4433,37 +4433,51 @@ msgstr "알림이 켜졌습니다." msgid "Can't turn on notification." msgstr "알림을 켤 수 없습니다." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "좋아하는 게시글을 생성할 수 없습니다." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "당신은 이 프로필에 구독되지 않고있습니다." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "당신은 다음 사용자를 이미 구독하고 있습니다." -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "다른 사람을 구독 하실 수 없습니다." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "다른 사람을 구독 하실 수 없습니다." -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "당신은 해당 그룹의 멤버가 아닙니다." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "당신은 해당 그룹의 멤버가 아닙니다." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4482,6 +4496,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 011c434cac..dff5c0b431 100644 --- a/locale/mk/LC_MESSAGES/statusnet.po +++ b/locale/mk/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:43+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:55+0000\n" "Language-Team: Macedonian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: mk\n" "X-Message-Group: out-statusnet\n" @@ -579,7 +579,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -681,7 +681,7 @@ msgstr "" #: actions/block.php:143 actions/deletenotice.php:145 #: actions/deleteuser.php:147 actions/groupblock.php:178 msgid "No" -msgstr "" +msgstr "Не" #: actions/block.php:143 actions/deleteuser.php:147 #, fuzzy @@ -1799,11 +1799,11 @@ msgstr "OpenID формуларот не може да се креира:%s" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Веќе сте најавени." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Неправилна содржина за известување" @@ -4391,40 +4391,54 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Информациите за аватарот не може да се снимат" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Не ни го испративте тој профил." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Не ни го испративте тој профил." msgstr[1] "Не ни го испративте тој профил." -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Оддалечена претплата" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Оддалечена претплата" msgstr[1] "Оддалечена претплата" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Не ни го испративте тој профил." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Не ни го испративте тој профил." msgstr[1] "Не ни го испративте тој профил." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4443,6 +4457,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index 4a8ed64274..12b20f3ddb 100644 --- a/locale/nb/LC_MESSAGES/statusnet.po +++ b/locale/nb/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:46+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:26:58+0000\n" "Language-Team: Norwegian (bokmål)‬\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: no\n" "X-Message-Group: out-statusnet\n" @@ -577,7 +577,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1796,11 +1796,11 @@ msgstr "Klarte ikke å oppdatere bruker." msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Allerede innlogget." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4335,40 +4335,54 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Klarte ikke å lagre avatar-informasjonen" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Ikke autorisert." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Svar til %s" -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Du er allerede logget inn!" -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4387,6 +4401,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index 85f3cb655e..cec42ca714 100644 --- a/locale/nl/LC_MESSAGES/statusnet.po +++ b/locale/nl/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:52+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:06+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nl\n" "X-Message-Group: out-statusnet\n" @@ -193,9 +193,8 @@ msgid "Could not save profile." msgstr "Het was niet mogelijk het profiel op te slaan." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "U kunt het abonnement op uzelf niet opzeggen." +msgstr "U zichzelf niet blokkeren!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -587,7 +586,7 @@ msgstr "Uitsnijden" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1843,11 +1842,11 @@ msgstr "De gebruiker %s kon niet uit de groet %s verwijderd worden" msgid "%s left group %s" msgstr "%s heeft de groep %s verlaten" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "U bent al aangemeld." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Het token is ongeldig of verlopen." @@ -4496,37 +4495,52 @@ msgstr "Notificaties ingeschakeld." msgid "Can't turn on notification." msgstr "Het is niet mogelijk de notificatie uit te schakelen." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Het was niet mogelijk de aliassen aan te maken." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "U bent op geen enkele gebruiker geabonneerd." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "Niemand heeft een abonnenment op u." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "U bent lid van geen enkele groep." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 +#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4545,6 +4559,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -5471,9 +5486,8 @@ msgid "Not subscribed!" msgstr "Niet geabonneerd!" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Kon abonnement niet verwijderen." +msgstr "Het was niet mogelijk het abonnement op uzelf te verwijderen." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index 6ce0460ca3..0703217dea 100644 --- a/locale/nn/LC_MESSAGES/statusnet.po +++ b/locale/nn/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:49+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:01+0000\n" "Language-Team: Norwegian Nynorsk\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nn\n" "X-Message-Group: out-statusnet\n" @@ -579,7 +579,7 @@ msgstr "Skaler" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1830,11 +1830,11 @@ msgstr "Kunne ikkje fjerne %s fra %s gruppa " msgid "%s left group %s" msgstr "%s forlot %s gruppa" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Allereie logga inn." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Ugyldig notisinnhald" @@ -4450,40 +4450,54 @@ msgstr "Notifikasjon på." msgid "Can't turn on notification." msgstr "Kan ikkje slå på notifikasjon." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Kunne ikkje lagre favoritt." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Du tingar ikkje oppdateringar til den profilen." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Kan ikkje tinga andre til deg." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Du er ikkje medlem av den gruppa." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4502,6 +4516,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index 33013c7af8..c8363f2a38 100644 --- a/locale/pl/LC_MESSAGES/statusnet.po +++ b/locale/pl/LC_MESSAGES/statusnet.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:56+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:09+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pl\n" "X-Message-Group: out-statusnet\n" @@ -197,7 +197,7 @@ msgstr "Nie można zapisać profilu." #: actions/apiblockcreate.php:105 #, fuzzy msgid "You cannot block yourself!" -msgstr "Nie można zrezygnować z obserwacji samego siebie." +msgstr "Nie można zablokować siebie." #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -581,7 +581,7 @@ msgstr "Przytnij" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1814,11 +1814,11 @@ msgstr "Nie można usunąć użytkownika %s z grupy %s" msgid "%s left group %s" msgstr "Użytkownik %s opuścił grupę %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Jesteś już zalogowany." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Nieprawidłowy lub wygasły token." @@ -2823,7 +2823,7 @@ msgstr "Nieprawidłowy adres URL profilu (błędny format)" #, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" -"To nie jest prawidłowy adres URL profilu (brak dokumentu YADIS lub określono " +"Nieprawidłowy adres URL profilu (brak dokumentu YADIS lub określono " "nieprawidłowe XRDS)." #: actions/remotesubscribe.php:176 @@ -4437,40 +4437,54 @@ msgstr "Włączono powiadomienia." msgid "Can't turn on notification." msgstr "Nie można włączyć powiadomień." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Nie można utworzyć aliasów." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "Nie subskrybujesz nikogo." -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "Nikt cię nie subskrybuje." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Nie jesteś członkiem żadnej grupy." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 #, fuzzy msgid "" "Commands:\n" @@ -4490,6 +4504,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -4526,9 +4541,8 @@ msgstr "" "reply # - odpowiada na wpis z podanym identyfikatorem\n" "reply - odpowiada na ostatni wpis użytkownika\n" "join - dołącza do grupy\n" -"login - uzyskuje odnośnik do zalogowania się w interfejsie WWW\n" "drop - opuszcza grupę\n" -"stats - uzyskuje twoje statystyki\n" +"stats - uzyskuje statystyki\n" "stop - to samo co \"off\"\n" "quit - to samo co \"off\"\n" "sub - to samo co \"follow\"\n" @@ -4536,10 +4550,10 @@ msgstr "" "last - to samo co \"get\"\n" "on - jeszcze nie zaimplementowano.\n" "off - jeszcze nie zaimplementowano.\n" -"nudge - jeszcze nie zaimplementowano.\n" +"nudge - przypomina użytkownikowi o aktualizacji.\n" "invite - jeszcze nie zaimplementowano.\n" -"track - jeszcze nie zaimplementowano.\n" -"untrack - jeszcze nie zaimplementowano.\n" +"track - jeszcze nie zaimplementowano.\n" +"untrack - jeszcze nie zaimplementowano.\n" "track off - jeszcze nie zaimplementowano.\n" "untrack all - jeszcze nie zaimplementowano.\n" "tracks - jeszcze nie zaimplementowano.\n" @@ -5411,7 +5425,7 @@ msgstr "Niesubskrybowane." #: lib/subs.php:133 #, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Nie można usunąć subskrypcji." +msgstr "Nie można usunąć autosubskrypcji." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index 01d8c5f63c..54cc569f2f 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:54:59+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:13+0000\n" "Language-Team: Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt\n" "X-Message-Group: out-statusnet\n" @@ -188,9 +188,8 @@ msgid "Could not save profile." msgstr "Não foi possível gravar o perfil." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Não pode deixar de seguir-se a si próprio!" +msgstr "Os utilizadores não podem bloquear-se a si próprios!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -573,7 +572,7 @@ msgstr "Cortar" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1817,11 +1816,11 @@ msgstr "Não foi possível remover o utilizador %s do grupo %s" msgid "%s left group %s" msgstr "%s deixou o grupo %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Sessão já foi iniciada." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Chave inválida ou expirada." @@ -4442,37 +4441,52 @@ msgstr "Notificação ligada." msgid "Can't turn on notification." msgstr "Não foi possível ligar a notificação." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Não foi possível criar cognomes." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "Não subscreveu ninguém." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Subscreve esta pessoa:" msgstr[1] "Subscreve estas pessoas:" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "Ninguém subscreve as suas notas." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Não está em nenhum grupo." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 +#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4491,6 +4505,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -5410,9 +5425,8 @@ msgid "Not subscribed!" msgstr "Não subscrito!" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Não foi possível apagar a subscrição." +msgstr "Não foi possível apagar a auto-subscrição." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index 71e51e35b0..535520096b 100644 --- a/locale/pt_BR/LC_MESSAGES/statusnet.po +++ b/locale/pt_BR/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:02+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:16+0000\n" "Language-Team: Brazilian Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt-br\n" "X-Message-Group: out-statusnet\n" @@ -576,7 +576,7 @@ msgstr "Cortar" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1850,11 +1850,11 @@ msgstr "Não é possível acompanhar o usuário: Usuário não encontrado." msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Já está logado." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "O conteúdo da mensagem é inválido" @@ -4498,40 +4498,54 @@ msgstr "Notificação ligada." msgid "Can't turn on notification." msgstr "Não é possível ligar a notificação." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Não foi possível criar a favorita." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Você não está assinando esse perfil." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Você já está assinando esses usuários:" msgstr[1] "Você já está assinando esses usuários:" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Não foi possível fazer com que o outros o sigam." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Não foi possível fazer com que o outros o sigam." msgstr[1] "Não foi possível fazer com que o outros o sigam." -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Você não está assinando esse perfil." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Você não é membro deste grupo." msgstr[1] "Você não é membro deste grupo." -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4550,6 +4564,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index 9fe47e65d4..713357714c 100644 --- a/locale/ru/LC_MESSAGES/statusnet.po +++ b/locale/ru/LC_MESSAGES/statusnet.po @@ -10,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:05+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:20+0000\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ru\n" "X-Message-Group: out-statusnet\n" @@ -191,9 +191,8 @@ msgid "Could not save profile." msgstr "Не удаётся сохранить профиль." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Вы не можете перестать следовать за собой!" +msgstr "Вы не можете заблокировать самого себя!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -582,7 +581,7 @@ msgstr "Обрезать" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1830,11 +1829,11 @@ msgstr "Не удаётся удалить пользователя %s из гр msgid "%s left group %s" msgstr "%s покинул группу %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Вы уже авторизовались." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Неверный или устаревший ключ." @@ -4452,40 +4451,55 @@ msgstr "Есть оповещение." msgid "Can't turn on notification." msgstr "Есть оповещение." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Не удаётся создать алиасы." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "Вы ни на кого не подписаны." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Вы подписаны на этих людей:" msgstr[1] "Вы подписаны на этих людей:" msgstr[2] "Вы подписаны на этих людей:" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "Никто не подписан на вас." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Эти люди подписались на вас:" msgstr[1] "Эти люди подписались на вас:" msgstr[2] "Эти люди подписались на вас:" -#: lib/command.php:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Вы не состоите ни в одной группе." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 +#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4504,6 +4518,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -5422,9 +5437,8 @@ msgid "Not subscribed!" msgstr "Не подписаны!" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Не удаётся удалить подписку." +msgstr "Невозможно удалить самоподписку." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/statusnet.po b/locale/statusnet.po index ea65870d57..dce6f6551c 100644 --- a/locale/statusnet.po +++ b/locale/statusnet.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -559,7 +559,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1716,11 +1716,11 @@ msgstr "" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4180,37 +4180,51 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, php-format +msgid "Could not create login token for %s" +msgstr "" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4229,6 +4243,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index a059ce87b5..01e895f8e9 100644 --- a/locale/sv/LC_MESSAGES/statusnet.po +++ b/locale/sv/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:08+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:23+0000\n" "Language-Team: Swedish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: sv\n" "X-Message-Group: out-statusnet\n" @@ -189,9 +189,8 @@ msgid "Could not save profile." msgstr "Kunde inte spara profil." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Du kan inte sluta följa dig själv!" +msgstr "Du kan inte blockera dig själv!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -382,7 +381,7 @@ msgstr "Du är redan en medlem i denna grupp." #: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221 msgid "You have been blocked from that group by the admin." -msgstr "Du har blivit blockerad från denna grupp av administratören. " +msgstr "Du har blivit blockerad från denna grupp av administratören." #: actions/apigroupjoin.php:138 #, php-format @@ -574,7 +573,7 @@ msgstr "Beskär" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1366,7 +1365,7 @@ msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" -"Anpassa hur din grupp ser ut genom att välja bakgrundbild och färgpalett. " +"Anpassa hur din grupp ser ut genom att välja bakgrundbild och färgpalett." #: actions/groupdesignsettings.php:263 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 @@ -1410,7 +1409,7 @@ msgstr "Misslyckades uppdatera logtyp." #: actions/groupmembers.php:93 lib/groupnav.php:92 #, php-format msgid "%s group members" -msgstr "%s " +msgstr "%s gruppmedlemmar" #: actions/groupmembers.php:96 #, php-format @@ -1786,11 +1785,11 @@ msgstr "Kunde inte ta bort användare %s från grupp %s" msgid "%s left group %s" msgstr "%s lämnade grupp %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Redan inloggad." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Ogiltig eller utgången token." @@ -2024,7 +2023,7 @@ msgstr "Övriga inställningar" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "Hantera diverse andra alternativ. " +msgstr "Hantera diverse andra alternativ." #: actions/othersettings.php:108 msgid " (free service)" @@ -2048,7 +2047,7 @@ msgstr "Visa eller göm profilutseenden." #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." -msgstr "Namnet på URL-förkortningstjänsen är för långt (max 50 tecken). " +msgstr "Namnet på URL-förkortningstjänsen är för långt (max 50 tecken)." #: actions/outbox.php:58 #, php-format @@ -2233,45 +2232,45 @@ msgid "" "Separate the terms by spaces; they must be 3 characters or more." msgstr "" "Sök efter personer på %%site.name%% efter deras namn, plats eller intressen. " -"Skilj söktermerna åt med mellanslag; de måste vara minst tre tecken långa. " +"Skilj söktermerna åt med mellanslag; de måste vara tre tecken långa." #: actions/peoplesearch.php:58 msgid "People search" -msgstr "Sökning personer" +msgstr "Personsökning" #: actions/peopletag.php:70 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s" -msgstr "Ingen giltig emailadress" +msgstr "Inte en giltig persontagg: %s" #: actions/peopletag.php:144 #, php-format msgid "Users self-tagged with %s - page %d" -msgstr "" +msgstr "Användare som taggat sig själv med %s - sida %d" #: actions/postnotice.php:84 msgid "Invalid notice content" -msgstr "Ogiltig innehåll i inlägget " +msgstr "Ogiltigt notisinnehåll" #: actions/postnotice.php:90 #, php-format msgid "Notice license ‘%s’ is not compatible with site license ‘%s’." -msgstr "" +msgstr "Licensen för notiser ‘%s’ är inte förenlig webbplatslicensen ‘%s’." #: actions/profilesettings.php:60 msgid "Profile settings" -msgstr "Profil inställningar" +msgstr "Profilinställningar" #: actions/profilesettings.php:71 msgid "" "You can update your personal profile info here so people know more about you." msgstr "" -"Du kan uppdatera din personliga profil här så personer får veta mer om dig." +"Du kan uppdatera din personliga profilinformation här så personer får veta " +"mer om dig." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Okänd profil" +msgstr "Profilinformation" #: actions/profilesettings.php:108 lib/groupeditform.php:154 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" @@ -2281,7 +2280,7 @@ msgstr "1-64 små bokstäver eller nummer, inga punkter eller mellanslag" #: actions/showgroup.php:247 actions/tagother.php:104 #: lib/groupeditform.php:157 lib/userprofile.php:149 msgid "Full name" -msgstr "Ditt fulla namn." +msgstr "Fullständigt namn" #: actions/profilesettings.php:115 actions/register.php:452 #: lib/groupeditform.php:161 @@ -2290,17 +2289,16 @@ msgstr "Hemsida" #: actions/profilesettings.php:117 actions/register.php:454 msgid "URL of your homepage, blog, or profile on another site" -msgstr "URL till din hemsida, blog eller profil på en annan sida." +msgstr "URL till din hemsida, blogg eller profil på en annan webbplats." #: actions/profilesettings.php:122 actions/register.php:460 -#, fuzzy, php-format +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "Berätta om dig själv och dina intressen inom 140 tecken" +msgstr "Beskriv dig själv och dina intressen med högst 140 tecken" #: actions/profilesettings.php:125 actions/register.php:463 -#, fuzzy msgid "Describe yourself and your interests" -msgstr "Berätta om dig själv och dina intressen inom 140 tecken" +msgstr "Beskriv dig själv och dina intressen" #: actions/profilesettings.php:127 actions/register.php:465 msgid "Bio" @@ -2327,6 +2325,8 @@ msgstr "Taggar" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" +"Taggar för dig själv (bokstäver, nummer, -, ., och _), separerade med " +"kommatecken eller mellanslag" #: actions/profilesettings.php:144 actions/siteadminpanel.php:307 msgid "Language" @@ -2334,7 +2334,7 @@ msgstr "Språk" #: actions/profilesettings.php:145 msgid "Preferred language" -msgstr "Språkval" +msgstr "Föredraget språk" #: actions/profilesettings.php:154 msgid "Timezone" @@ -2342,32 +2342,31 @@ msgstr "Tidszon" #: actions/profilesettings.php:155 msgid "What timezone are you normally in?" -msgstr "Vilken tidszon befinner du dig normalt?" +msgstr "I vilken tidszon befinner du dig normalt?" #: actions/profilesettings.php:160 msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -"Automatisk prenummeration på den som prenumererar på mig. (Bäst för icke " -"mänsklig användare) " +"Prenumerera automatiskt på den prenumererar på mig (bäst för icke-människa) " #: actions/profilesettings.php:221 actions/register.php:223 -#, fuzzy, php-format +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "Biografin är för lång (max 140 tecken)" +msgstr "Biografin är för lång (max %d tecken)." #: actions/profilesettings.php:228 actions/siteadminpanel.php:165 msgid "Timezone not selected." -msgstr "Du har inte valt tidszon" +msgstr "Tidszon inte valt." #: actions/profilesettings.php:234 msgid "Language is too long (max 50 chars)." -msgstr "Språket är för långt(max 50 tecken)." +msgstr "Språknamn är för långt (max 50 tecken)." #: actions/profilesettings.php:246 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "Ogiltig hemsideadress '%s'" +msgstr "Ogiltig tagg: \"%s\"" #: actions/profilesettings.php:295 msgid "Couldn't update user for autosubscribe." @@ -2378,9 +2377,8 @@ msgid "Couldn't save profile." msgstr "Kunde inte spara profil." #: actions/profilesettings.php:336 -#, fuzzy msgid "Couldn't save tags." -msgstr "Kunde inte spara profil." +msgstr "Kunde inte spara taggar." #: actions/profilesettings.php:344 lib/adminpanelaction.php:126 msgid "Settings saved." @@ -2389,36 +2387,32 @@ msgstr "Inställningar sparade." #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)" -msgstr "" +msgstr "Bortom sidbegränsningen (%s)" #: actions/public.php:92 -#, fuzzy msgid "Could not retrieve public stream." -msgstr "Kunde inte ta emot favoritinläggen." +msgstr "Kunde inte hämta publik ström." #: actions/public.php:129 -#, fuzzy, php-format +#, php-format msgid "Public timeline, page %d" -msgstr "Publik tidslinje" +msgstr "Publik tidslinje, sida %d" #: actions/public.php:131 lib/publicgroupnav.php:79 msgid "Public timeline" msgstr "Publik tidslinje" #: actions/public.php:151 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "Publik ström" +msgstr "Publikt flöde av ström (RSS 1.0)" #: actions/public.php:155 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "Publik ström" +msgstr "Publikt flöde av ström (RSS 2.0)" #: actions/public.php:159 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Publik ström" +msgstr "Publikt flöde av ström (Atom)" #: actions/public.php:179 #, php-format @@ -2426,16 +2420,20 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Detta är den publika tidslinjen för %%site.name%% men ingen har postat något " +"än." #: actions/public.php:182 msgid "Be the first to post!" -msgstr "" +msgstr "Bli först att posta!" #: actions/public.php:186 #, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" msgstr "" +"Varför inte [registrera ett konto](%%action.register%%) och bli först att " +"posta!" #: actions/public.php:233 #, php-format @@ -2445,6 +2443,10 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"Detta är %%site.name%%, en [mikroblogg](http://en.wikipedia.org/wiki/Micro-" +"blogging)-tjänst baserad på den fria programvaran [StatusNet](http://status." +"net/). [Gå med nu](%%action.register%%) för att dela notiser om dig själv " +"med vänner, familj och kollegor! ([Läs mer](%%doc.help%%))" #: actions/public.php:238 #, php-format @@ -2453,25 +2455,27 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" +"Detta är %%site.name%%, en [mikroblogg](http://en.wikipedia.org/wiki/Micro-" +"blogging)-tjänst baserad på den fria programvaran [StatusNet](http://status." +"net/)." #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "Publik ström" +msgstr "Publikt taggmoln" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "" +msgstr "Dessa är de populäraste senaste taggarna på %s " #: actions/publictagcloud.php:69 #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." -msgstr "" +msgstr "Ingen har postat en notis med en [hashtagg](%%doc.tags%%) än." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "Bli först att posta en!" #: actions/publictagcloud.php:75 #, php-format @@ -2479,10 +2483,12 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"Varför inte [registrera ett konto](%%action.register%%) och bli först att " +"posta en!" #: actions/publictagcloud.php:135 msgid "Tag cloud" -msgstr "" +msgstr "Taggmoln" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -2490,53 +2496,56 @@ msgstr "Du är redan inloggad!" #: actions/recoverpassword.php:62 msgid "No such recovery code." -msgstr "Ingen sådan återställningskod. " +msgstr "Ingen sådan återskapningskod." #: actions/recoverpassword.php:66 msgid "Not a recovery code." -msgstr "Det är ingen kod för återställning." +msgstr "Inte en återskapningskod." #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." -msgstr "Kod för återställning av okänd användare." +msgstr "Återskapningskod för okänd användare." #: actions/recoverpassword.php:86 msgid "Error with confirmation code." -msgstr "Fel uppstog med bekräftelsekoden." +msgstr "Fel med bekräftelsekod." #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." -msgstr "Denna bekräftelsekod är för gammal. Du får starta om på nytt igen." +msgstr "Denna bekräftelsekod är för gammal. Var vänlig börja om igen." #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." -msgstr "Kunde inte uppdatera användaren med bekräftad emailadress." +msgstr "Kunde inte uppdatera användaren med bekräftad e-postadress." #: 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 "" +"Om du har glömt eller förlorat ditt lösenord kan du få ett nytt skickat till " +"den e-postadress du har sparat i ditt konto." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " -msgstr "" +msgstr "Du har blivit identifierad. Ange ett nytt lösenord nedan. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "" +msgstr "Återskapande av lösenord" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "Smeknamn eller e-postadress" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." -msgstr "Ditt användarnamn på denna server eller registrerad epost adress." +msgstr "" +"Ditt användarnamn på denna server, eller din registrerade e-postadress." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" -msgstr "Återställ" +msgstr "Återskapa" #: actions/recoverpassword.php:208 msgid "Reset password" @@ -2544,11 +2553,11 @@ msgstr "Återställ lösenord" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "Återställ lösenord" +msgstr "Återskapa lösenord" #: actions/recoverpassword.php:210 actions/recoverpassword.php:322 msgid "Password recovery requested" -msgstr "Förfrågan om återställning av lösenord" +msgstr "Återskapande av lösenord begärd" #: actions/recoverpassword.php:213 msgid "Unknown action" @@ -2556,7 +2565,7 @@ msgstr "Okänd funktion" #: actions/recoverpassword.php:236 msgid "6 or more characters, and don't forget it!" -msgstr "Minst 6 tecken och glöm inte bort det!" +msgstr "Minst 6 tecken, och glöm inte bort det!" #: actions/recoverpassword.php:243 msgid "Reset" @@ -2564,35 +2573,35 @@ msgstr "Återställ" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." -msgstr "Skriv in ett smeknamn eller en epostadress." +msgstr "Skriv in ett smeknamn eller en e-postadress." #: actions/recoverpassword.php:272 msgid "No user with that email address or username." -msgstr "Ingen användare med den emailadressen eller användarnamn." +msgstr "Ingen användare med den e-postadressen eller användarnamn." #: actions/recoverpassword.php:287 msgid "No registered email address for that user." -msgstr "Ingen registrerad epost adress för den användaren." +msgstr "Ingen registrerad e-postadress för den användaren." #: actions/recoverpassword.php:301 msgid "Error saving address confirmation." -msgstr "Fel uppstog när adressen skulle bekräftas." +msgstr "Fel vid sparande av adressbekräftelse." #: actions/recoverpassword.php:325 msgid "" "Instructions for recovering your password have been sent to the email " "address registered to your account." msgstr "" -"Instruktioner om hur du återställer ditt lösenord har sänts till din e-" -"postadress " +"Instruktioner för att återställa ditt lösenord har skickats till e-" +"postadressen som är registrerat till ditt konto " #: actions/recoverpassword.php:344 msgid "Unexpected password reset." -msgstr "Oväntad rensning av lösenord." +msgstr "Oväntad återställning av lösenord." #: actions/recoverpassword.php:352 msgid "Password must be 6 chars or more." -msgstr "Lösenordet måste vara 6 tecken eller fler." +msgstr "Lösenordet måste vara minst 6 tecken." #: actions/recoverpassword.php:356 msgid "Password and confirmation do not match." @@ -2604,20 +2613,19 @@ msgstr "Fel uppstog i användarens inställning" #: actions/recoverpassword.php:382 msgid "New password successfully saved. You are now logged in." -msgstr "Nya lösenordet har blivit sparat. Du är nu även inloggad." +msgstr "Nya lösenordet sparat. Du är nu inloggad." #: actions/register.php:85 actions/register.php:189 actions/register.php:404 msgid "Sorry, only invited people can register." -msgstr "" +msgstr "Ledsen, bara inbjudna personer kan registrera sig." #: actions/register.php:92 -#, fuzzy msgid "Sorry, invalid invitation code." -msgstr "Fel uppstog med bekräftelsekoden." +msgstr "Ledsen, ogiltig inbjudningskod." #: actions/register.php:112 msgid "Registration successful" -msgstr "Registreringen är genomförd" +msgstr "Registreringen genomförd" #: actions/register.php:114 actions/register.php:502 lib/action.php:455 #: lib/logingroupnav.php:85 @@ -2626,29 +2634,31 @@ msgstr "Registrera" #: actions/register.php:135 msgid "Registration not allowed." -msgstr "Registrering är inte möjlig." +msgstr "Registrering inte tillåten." #: actions/register.php:198 msgid "You can't register if you don't agree to the license." -msgstr "Du kan inte registrera dig om du inte godkänner licensvillkor." +msgstr "Du kan inte registrera dig om du inte godkänner licensen." #: actions/register.php:201 msgid "Not a valid email address." -msgstr "Det är ingen giltig epost adress." +msgstr "Inte en giltig e-postadress." #: actions/register.php:212 msgid "Email address already exists." -msgstr "Epostadressen finns redan." +msgstr "E-postadressen finns redan." #: actions/register.php:243 actions/register.php:264 msgid "Invalid username or password." -msgstr "Felaktigt användarnamn eller lösenord." +msgstr "Ogiltigt användarnamn eller lösenord." #: actions/register.php:342 msgid "" "With this form you can create a new account. You can then post notices and " "link up to friends and colleagues. " 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:424 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." @@ -2658,7 +2668,7 @@ msgstr "" #: actions/register.php:429 msgid "6 or more characters. Required." -msgstr "6 eller fler tecken. Måste fyllas i." +msgstr "Minst 6 tecken. Måste fyllas i." #: actions/register.php:433 msgid "Same as password above. Required." @@ -2667,32 +2677,32 @@ msgstr "Samma som lösenordet ovan. Måste fyllas i." #: actions/register.php:437 actions/register.php:441 #: actions/siteadminpanel.php:283 lib/accountsettingsaction.php:120 msgid "Email" -msgstr "Epost" +msgstr "E-post" #: actions/register.php:438 actions/register.php:442 msgid "Used only for updates, announcements, and password recovery" msgstr "" -"Används endast för uppdateringar, annonsering och återställning av lösenord" +"Används endast för uppdateringar, tillkännagivanden och återskapande av " +"lösenord" #: actions/register.php:449 msgid "Longer name, preferably your \"real\" name" -msgstr "Långt namn, förslagsvis ditt \"riktiga\" namn" +msgstr "Längre namn, förslagsvis ditt \"verkliga\" namn" #: actions/register.php:493 msgid "My text and files are available under " -msgstr "Min text och filer finns tillgängliga under" +msgstr "Min text och mina filer är tillgängliga under " #: actions/register.php:495 msgid "Creative Commons Attribution 3.0" -msgstr "" +msgstr "Creative Commons Erkännande 3.0" #: actions/register.php:496 -#, fuzzy msgid "" " except this private data: password, email address, IM address, and phone " "number." msgstr "" -"förutom det här, som är privat: lösenord, epostadress, IM-adress, " +"med undantag av den här privata datan: lösenord, e-postadress, IM-adress, " "telefonnummer." #: actions/register.php:537 @@ -2713,28 +2723,14 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Grattis, %s! Välkommen till %%%%site.name%%%%. Härifrån, kanske du vill...\n" -"\n" -"* Gå till [din profil](%s) och göra ditt första inlägg.\n" -"* Lägg till en [Jabber/GTalk adress](%%%%action.imsettings%%%%) så du kan " -"skicka inlägg med en IM klient.\n" -"* [Sök efter personer](%%%%action.peoplesearch%%%%) som du kanske känner " -"eller delar dina intressen. \n" -"* Uppdatera din [profil inställning](%%%%action.profilesettings%%%%) för att " -"berätta lite mer om dig själv för andra här. \n" -"* Läs igenom [online dok](%%%%doc.help%%%%) efter funktioner som du kanske " -"missat. \n" -"\n" -"Tack för att du registrerade dig och vi hoppas du kommer trivas med denna " -"service." #: actions/register.php:561 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" msgstr "" -"(Du kommer få ett meddelande med email inom kort med instruktioner hur du " -"bekräftar din emailadress)" +"(Du kommer få ett meddelande med e-post inom kort med instruktioner hur du " +"bekräftar din e-postadress.)" #: actions/remotesubscribe.php:98 #, php-format @@ -2743,9 +2739,9 @@ msgid "" "register%%) a new account. If you already have an account on a [compatible " "microblogging site](%%doc.openmublog%%), enter your profile URL below." msgstr "" -"För att prenumerera så kan du [logga in](%%action.login%%) eller [registrera]" -"(%%action.register%%) ett nytt konto. Om du redan har ett konto på en " -"[kompatibel mikroblogg sida](%%doc.openmublog%%) fyll i din profils URL " +"För att prenumerera kan du [logga in](%%action.login%%) eller [registrera](%%" +"action.register%%) ett nytt konto. Om du redan har ett konto på en " +"[kompatibel mikrobloggwebbplats](%%doc.openmublog%%), fyll i din profils URL " "nedan." #: actions/remotesubscribe.php:112 @@ -2753,9 +2749,8 @@ msgid "Remote subscribe" msgstr "Fjärrprenumerera" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "Prenumerera på mina Twitter vänner här." +msgstr "Prenumerera på en fjärranvändare" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -2767,11 +2762,11 @@ msgstr "Smeknamnet på användaren du vill följa" #: actions/remotesubscribe.php:133 msgid "Profile URL" -msgstr "Profil URL" +msgstr "Profil-URL" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" -msgstr "URL till din profil på en annan kompatibel mikroblogg" +msgstr "URL till din profil på en annan kompatibel mikrobloggtjänst" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:365 @@ -2780,21 +2775,21 @@ msgstr "Prenumerera" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" -msgstr "Nåt är fel med profil URL (Format fel)" +msgstr "Ogiltig profil-URL (dåligt format)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Det är ingen giltig profil URL (ingen YADIS angiven)." +msgstr "" +"Inte en giltig profil-URL (inget YADIS-dokument eller ogiltig XRDS " +"definerad)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "Det där är en lokal profil! Logga in för att prenumerera." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Kunde inte få en förfrågan token." +msgstr "Kunde inte få en förfrågnings-token." #: actions/replies.php:125 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -2803,24 +2798,24 @@ msgid "Replies to %s" msgstr "Svarat på %s" #: actions/replies.php:127 -#, fuzzy, php-format +#, php-format msgid "Replies to %s, page %d" -msgstr "Svarat på %s" +msgstr "Svar till %s, sida %d" #: actions/replies.php:144 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde med svar för %s (RSS 1.0)" #: actions/replies.php:151 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde med svar för %s (RSS 2.0)" #: actions/replies.php:158 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde med svar för %s (Atom)" #: actions/replies.php:198 #, php-format @@ -2828,6 +2823,8 @@ msgid "" "This is the timeline showing replies to %s but %s hasn't received a notice " "to his attention yet." msgstr "" +"Detta är tidslinjen som visar svar till %s men %s har inte tagit emot en " +"notis för dennes uppmärksamhet än." #: actions/replies.php:203 #, php-format @@ -2835,6 +2832,8 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"Du kan engagera andra användare i en konversation, prenumerera på fler " +"personer eller [gå med i grupper](%%action.groups%%)." #: actions/replies.php:205 #, php-format @@ -2842,45 +2841,47 @@ msgid "" "You can try to [nudge %s](../%s) or [post something to his or her attention]" "(%%%%action.newnotice%%%%?status_textarea=%s)." msgstr "" +"Du kan prova att [knuffa %s](../%s) eller [posta någonting för hans eller " +"hennes uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/repliesrss.php:72 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s on %2$s!" -msgstr "Meddelande till %1$s på %2$s" +msgstr "Svar till %1$s på %2$s" #: actions/sandbox.php:65 actions/unsandbox.php:65 #, fuzzy msgid "You cannot sandbox users on this site." -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Du kan inte flytta användare till sandlåda på denna webbplats." #: actions/sandbox.php:72 #, fuzzy msgid "User is already sandboxed." -msgstr "Användaren har ingen profil." +msgstr "Användare är redan flyttad till sandlåda." #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%s's favorite notices, page %d" -msgstr "%s favoriter" +msgstr "%ss favoritnotiser, sida %d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." -msgstr "Kunde inte ta emot favoritinläggen." +msgstr "Kunde inte hämta favoritnotiser." #: actions/showfavorites.php:170 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Flöden för $s vänner" +msgstr "Flöde för %ss favoriter (RSS 1.0)" #: actions/showfavorites.php:177 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Flöden för $s vänner" +msgstr "Flöde för %ss favoriter (RSS 2.0)" #: actions/showfavorites.php:184 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "Flöden för $s vänner" +msgstr "Flöde för %ss favoriter (Atom)" #: actions/showfavorites.php:205 msgid "" @@ -2905,85 +2906,81 @@ msgstr "" #: actions/showfavorites.php:242 msgid "This is a way to share what you like." -msgstr "" +msgstr "Detta är ett sätt att dela vad du gillar." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "" +msgstr "%s grupp" #: actions/showgroup.php:84 #, php-format msgid "%s group, page %d" -msgstr "" +msgstr "%s grupp, sida %d" #: actions/showgroup.php:218 -#, fuzzy msgid "Group profile" -msgstr "Inget sådant inlägg." +msgstr "Grupprofil" #: actions/showgroup.php:263 actions/tagother.php:118 #: actions/userauthorization.php:167 lib/userprofile.php:177 msgid "URL" -msgstr "" +msgstr "URL" #: actions/showgroup.php:274 actions/tagother.php:128 #: actions/userauthorization.php:179 lib/userprofile.php:194 -#, fuzzy msgid "Note" -msgstr "Inlägg" +msgstr "Notis" #: actions/showgroup.php:284 lib/groupeditform.php:184 msgid "Aliases" -msgstr "" +msgstr "Alias" #: actions/showgroup.php:293 msgid "Group actions" -msgstr "" +msgstr "Gruppåtgärder" #: actions/showgroup.php:328 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s grupp (RSS 1.0)" #: actions/showgroup.php:334 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s grupp (RSS 2.0)" #: actions/showgroup.php:340 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (Atom)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s grupp (Atom)" #: actions/showgroup.php:345 #, php-format msgid "FOAF for %s group" -msgstr "Outbox för %s" +msgstr "FOAF för %s grupp" #: actions/showgroup.php:381 actions/showgroup.php:438 lib/groupnav.php:91 -#, fuzzy msgid "Members" -msgstr "Medlem sedan" +msgstr "Medlemmar" #: actions/showgroup.php:386 lib/profileaction.php:117 #: lib/profileaction.php:148 lib/profileaction.php:236 lib/section.php:95 #: lib/tagcloudsection.php:71 msgid "(None)" -msgstr "" +msgstr "(Ingen)" #: actions/showgroup.php:392 msgid "All members" -msgstr "" +msgstr "Alla medlemmar" #: actions/showgroup.php:429 lib/profileaction.php:174 msgid "Statistics" msgstr "Statistik" #: actions/showgroup.php:432 -#, fuzzy msgid "Created" -msgstr "Skapa" +msgstr "Skapad" #: actions/showgroup.php:448 #, php-format @@ -2994,6 +2991,11 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** är en användargrupp på %%%%site.name%%%%, en [mikroblogg](http://en." +"wikipedia.org/wiki/Micro-blogging)-tjänst baserad den fria programvaran " +"[StatusNet](http://status.net/). Dess medlemmar delar korta meddelande om " +"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:454 #, php-format @@ -3003,10 +3005,14 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" +"**%s** är en användargrupp på %%%%site.name%%%%, en [mikroblogg](http://en." +"wikipedia.org/wiki/Micro-blogging)-tjänst baserad den fria programvaran " +"[StatusNet](http://status.net/). Dess medlemmar delar korta meddelande om " +"sina liv och intressen. " #: actions/showgroup.php:482 msgid "Admins" -msgstr "" +msgstr "Administratörer" #: actions/showmessage.php:81 msgid "No such message." @@ -3014,7 +3020,7 @@ msgstr "Inget sådant meddelande." #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." -msgstr "Endast den som skickat och mottagaren kan läsa detta meddelande." +msgstr "Endast avsändaren och mottagaren kan läsa detta meddelande." #: actions/showmessage.php:108 #, php-format @@ -3027,55 +3033,56 @@ msgid "Message from %1$s on %2$s" msgstr "Meddelande från %1$s på %2$s" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "Inlägg" +msgstr "Notis borttagen." #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" -msgstr "Inlägg taggade med %s" +msgstr "taggade %s" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%s, page %d" -msgstr "Inbox för %s - sida %d" +msgstr "%s, sida %d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s tagged %s (RSS 1.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s taggade %s (RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s (RSS 2.0)" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för %s (Atom)" #: actions/showstream.php:148 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s" -msgstr "Outbox för %s" +msgstr "FOAF för %s" #: actions/showstream.php:191 #, php-format msgid "This is the timeline for %s but %s hasn't posted anything yet." -msgstr "" +msgstr "Detta är tidslinjen för %s men %s har inte postat något än." #: actions/showstream.php:196 msgid "" "Seen anything interesting recently? You haven't posted any notices yet, now " "would be a good time to start :)" msgstr "" +"Sett något intressant nyligen? Du har inte postat några notiser än. Varför " +"inte börja nu?" #: actions/showstream.php:198 #, php-format @@ -3083,6 +3090,8 @@ msgid "" "You can try to nudge %s or [post something to his or her attention](%%%%" "action.newnotice%%%%?status_textarea=%s)." msgstr "" +"Du kan prova att knuffa %s eller [posta något för hans eller hennes " +"uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%s)." #: actions/showstream.php:234 #, php-format @@ -3092,6 +3101,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** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://en." +"wikipedia.org/wiki/Micro-blogging)-tjänst baserad på den fria programvaran " +"[StatusNet](http://status.net/). [Gå med nu](%%%%action.register%%%%) för " +"att följa **%s**s notiser och många fler! ([Läs mer](%%%%doc.help%%%%))" #: actions/showstream.php:239 #, php-format @@ -3100,171 +3113,164 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" +"**%s** har ett konto på %%%%site.name%%%%, en [mikroblogg](http://en." +"wikipedia.org/wiki/Micro-blogging)-tjänst baserad på den fria programvaran " +"[StatusNet](http://status.net/). " #: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy msgid "You cannot silence users on this site." -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Du kan inte tysta ned användare på denna webbplats." #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "Användaren har ingen profil." +msgstr "Användaren är redan nedtystad." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site." -msgstr "" +msgstr "Grundinställningar för din StatusNet-webbplats" #: actions/siteadminpanel.php:147 msgid "Site name must have non-zero length." -msgstr "" +msgstr "Webbplatsnamnet måste vara minst ett tecken långt." #: actions/siteadminpanel.php:155 -#, fuzzy msgid "You must have a valid contact email address" -msgstr "Ingen giltig emailadress" +msgstr "Du måste ha en giltig kontakte-postadress" #: actions/siteadminpanel.php:173 #, php-format msgid "Unknown language \"%s\"" -msgstr "" +msgstr "Okänt språk \"%s\"" #: actions/siteadminpanel.php:180 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "Ogiltig rapport-URL för ögonblicksbild" #: actions/siteadminpanel.php:186 msgid "Invalid snapshot run value." -msgstr "" +msgstr "Ogiltigt körvärde för ögonblicksbild." #: actions/siteadminpanel.php:192 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "Frekvens för ögonblicksbilder måste vara ett nummer." #: actions/siteadminpanel.php:199 msgid "You must set an SSL server when enabling SSL." -msgstr "" +msgstr "Du måste ange en SSL-server när du aktiverar SSL." #: actions/siteadminpanel.php:204 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "Ogiltigt SSL-servernamn. Den maximala längden är 255 tecken." #: actions/siteadminpanel.php:210 msgid "Minimum text limit is 140 characters." -msgstr "" +msgstr "Minsta textbegränsning är 140 tecken." #: actions/siteadminpanel.php:216 msgid "Dupe limit must 1 or more seconds." -msgstr "" +msgstr "Begränsning av duplikat måste vara en eller fler sekuner." #: actions/siteadminpanel.php:266 msgid "General" -msgstr "" +msgstr "Allmänt" #: actions/siteadminpanel.php:269 -#, fuzzy msgid "Site name" -msgstr "Nytt inlägg" +msgstr "Webbplatsnamn" #: actions/siteadminpanel.php:270 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "" +msgstr "Namnet på din webbplats, t.ex. \"Företagsnamn mikroblogg\"" #: actions/siteadminpanel.php:274 msgid "Brought by" -msgstr "" +msgstr "Tillhandahållen av" #: actions/siteadminpanel.php:275 msgid "Text used for credits link in footer of each page" -msgstr "" +msgstr "Text som används för tillskrivningslänkar i sidfoten på varje sida." #: actions/siteadminpanel.php:279 msgid "Brought by URL" -msgstr "" +msgstr "Tillhandahållen av URL" #: actions/siteadminpanel.php:280 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "URL som används för tillskrivningslänkar i sidfoten på varje sida" #: actions/siteadminpanel.php:284 -#, fuzzy msgid "Contact email address for your site" -msgstr "Ny emailadress för att skicka till %s" +msgstr "Kontakte-postadress för din webbplats" #: actions/siteadminpanel.php:290 -#, fuzzy msgid "Local" -msgstr "Plats" +msgstr "Lokal" #: actions/siteadminpanel.php:301 msgid "Default timezone" -msgstr "" +msgstr "Standardtidszon" #: actions/siteadminpanel.php:302 msgid "Default timezone for the site; usually UTC." -msgstr "" +msgstr "Standardtidzon för denna webbplats; vanligtvis UTC." #: actions/siteadminpanel.php:308 -#, fuzzy msgid "Default site language" -msgstr "Språkval" +msgstr "Webbplatsens standardspråk" #: actions/siteadminpanel.php:316 msgid "URLs" -msgstr "" +msgstr "URL:er" #: actions/siteadminpanel.php:319 -#, fuzzy msgid "Server" -msgstr "Återställ" +msgstr "Server" #: actions/siteadminpanel.php:319 msgid "Site's server hostname." -msgstr "" +msgstr "Värdnamn för webbplatsens server." #: actions/siteadminpanel.php:323 msgid "Fancy URLs" -msgstr "" +msgstr "Utsmyckade URL:er" #: actions/siteadminpanel.php:325 msgid "Use fancy (more readable and memorable) URLs?" msgstr "" +"Skall utsmyckade URL:er användas (mer läsbara och lättare att komma ihåg)?" #: actions/siteadminpanel.php:331 -#, fuzzy msgid "Access" -msgstr "Acceptera" +msgstr "Åtkomst" #: actions/siteadminpanel.php:334 -#, fuzzy msgid "Private" -msgstr "Sekretesspolicy" +msgstr "Privat" #: actions/siteadminpanel.php:336 msgid "Prohibit anonymous users (not logged in) from viewing site?" msgstr "" +"Skall anonyma användare (inte inloggade) förhindras från att se webbplatsen?" #: actions/siteadminpanel.php:340 -#, fuzzy msgid "Invite only" -msgstr "Bjud in" +msgstr "Endast inbjudan" #: actions/siteadminpanel.php:342 msgid "Make registration invitation only." -msgstr "" +msgstr "Gör så att registrering endast sker genom inbjudan." #: actions/siteadminpanel.php:346 -#, fuzzy msgid "Closed" -msgstr "Ingen sådan användare" +msgstr "Stängd" #: actions/siteadminpanel.php:348 msgid "Disable new registrations." -msgstr "" +msgstr "Inaktivera nya registreringar." #: actions/siteadminpanel.php:354 msgid "Snapshots" -msgstr "" +msgstr "Ögonblicksbild" #: actions/siteadminpanel.php:357 msgid "Randomly during Web hit" @@ -3272,113 +3278,109 @@ msgstr "" #: actions/siteadminpanel.php:358 msgid "In a scheduled job" -msgstr "" +msgstr "I ett schemalagt jobb" #: actions/siteadminpanel.php:359 actions/siteadminpanel.php:383 -#, fuzzy msgid "Never" -msgstr "Återställ" +msgstr "Aldrig" #: actions/siteadminpanel.php:360 msgid "Data snapshots" -msgstr "" +msgstr "Ögonblicksbild av data" #: actions/siteadminpanel.php:361 msgid "When to send statistical data to status.net servers" -msgstr "" +msgstr "När statistikdata skall skickas till status.net-servrar" #: actions/siteadminpanel.php:366 msgid "Frequency" -msgstr "" +msgstr "Frekvens" #: actions/siteadminpanel.php:367 msgid "Snapshots will be sent once every N web hits" -msgstr "" +msgstr "Ögonblicksbild kommer skickas var N:te webbträff" #: actions/siteadminpanel.php:372 msgid "Report URL" -msgstr "" +msgstr "Rapport-URL" #: actions/siteadminpanel.php:373 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "Ögonblicksbild kommer skickat till denna URL" #: actions/siteadminpanel.php:380 -#, fuzzy msgid "SSL" -msgstr "SMS" +msgstr "SSL" #: actions/siteadminpanel.php:384 -#, fuzzy msgid "Sometimes" -msgstr "Inlägg" +msgstr "Ibland" #: actions/siteadminpanel.php:385 msgid "Always" -msgstr "" +msgstr "Alltid" #: actions/siteadminpanel.php:387 msgid "Use SSL" -msgstr "" +msgstr "Använd SSL" #: actions/siteadminpanel.php:388 msgid "When to use SSL" -msgstr "" +msgstr "När SSL skall användas" #: actions/siteadminpanel.php:393 msgid "SSL Server" -msgstr "" +msgstr "SSL-server" #: actions/siteadminpanel.php:394 msgid "Server to direct SSL requests to" -msgstr "" +msgstr "Server att dirigera SSL-förfrågningar till" #: actions/siteadminpanel.php:400 msgid "Limits" -msgstr "" +msgstr "Begränsningar" #: actions/siteadminpanel.php:403 msgid "Text limit" -msgstr "" +msgstr "Textbegränsning" #: actions/siteadminpanel.php:403 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "Maximala antalet tecken för notiser." #: actions/siteadminpanel.php:407 msgid "Dupe limit" -msgstr "" +msgstr "Duplikatbegränsning" #: actions/siteadminpanel.php:407 msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" +"Hur länge användare måste vänta (i sekunder) för att posta samma sak igen." #: actions/siteadminpanel.php:421 actions/useradminpanel.php:313 -#, fuzzy msgid "Save site settings" -msgstr "Twitter inställningar" +msgstr "Spara webbplatsinställningar" #: actions/smssettings.php:58 msgid "SMS Settings" -msgstr "SMS Inställningar" +msgstr "SMS-inställningar" #: actions/smssettings.php:69 #, php-format msgid "You can receive SMS messages through email from %%site.name%%." -msgstr "Du kan ta emot SMS meddelande via email från %%site.name%%." +msgstr "Du kan ta emot SMS-meddelande genom e-post från %%site.name%%." #: actions/smssettings.php:91 -#, fuzzy msgid "SMS is not available." -msgstr "Denna sida är inte tillgänglig i den mediatyp du accepterat" +msgstr "SMS är inte tillgängligt." #: actions/smssettings.php:112 msgid "Current confirmed SMS-enabled phone number." -msgstr "Nuvarande bekäftat SMS telefonnummer" +msgstr "Nuvarande bekäftat telefonnummer för SMS." #: actions/smssettings.php:123 msgid "Awaiting confirmation on this phone number." -msgstr "Väntar bekräftelse på detta telefonnummer. " +msgstr "Väntar bekräftelse för detta telefonnummer." #: actions/smssettings.php:130 msgid "Confirmation code" @@ -3390,7 +3392,7 @@ msgstr "Fyll i koden du mottog i din telefon." #: actions/smssettings.php:138 msgid "SMS Phone number" -msgstr "SMS Telefonnummer" +msgstr "Telefonnummer för SMS" #: actions/smssettings.php:140 msgid "Phone number, no punctuation or spaces, with area code" @@ -3401,7 +3403,7 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" -"Skicka inlägg till mig via SMS; Jag är införstådd att min operatör kan " +"Skicka notiser till mig via SMS. Jag är införstådd med att min operatör kan " "debitera mig." #: actions/smssettings.php:306 @@ -3414,34 +3416,31 @@ msgstr "Ingen operatör vald." #: actions/smssettings.php:318 msgid "That is already your phone number." -msgstr "Det är redan ditt telefonnummer." +msgstr "Detta är redan ditt telefonnummer." #: actions/smssettings.php:321 msgid "That phone number already belongs to another user." -msgstr "Det numret tillhör en annan användare." +msgstr "Detta telefonnumr tillhör redan en annan användare." #: actions/smssettings.php:347 -#, fuzzy msgid "" "A confirmation code was sent to the phone number you added. Check your phone " "for the code and instructions on how to use it." msgstr "" -"En bekräftelsekod har skickats ut till telefonnumret du fyllde i. " -"Kontrollera din inbox (och spamlådan!) efter kod och instruktioner hur du " -"använder den." +"En bekräftelsekod skickades till det telefonnummer du lagt till. Kontrollera " +"din telefon för koden och instruktioner om hur du använder den." #: actions/smssettings.php:374 msgid "That is the wrong confirmation number." -msgstr "Det är fel nummer i bekräftelsen" +msgstr "Detta är fel bekräftelsenummer." #: actions/smssettings.php:405 msgid "That is not your phone number." -msgstr "Det är inte ditt telefonnummer." +msgstr "Detta är inte ditt telefonnummer." #: actions/smssettings.php:465 -#, fuzzy msgid "Mobile carrier" -msgstr "Välj en operatör" +msgstr "Mobiloperatör" #: actions/smssettings.php:469 msgid "Select a carrier" @@ -3453,63 +3452,61 @@ 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 för din telefon. Vet du nån operatör som kan taemot SMS över " -"email som inte finns med i listan, skicka ett email till oss och tala det " -"hit %s" +"Mobiloperatör för din telefon. Känner du till en operatör som kan ta emot " +"SMS via e-post men som inte finns med i listan, skicka ett e-post till oss " +"på %s och berätta." #: actions/smssettings.php:498 msgid "No code entered" -msgstr "Ingen kod är ifylld" +msgstr "Ingen kod ifylld" #: actions/subedit.php:70 -#, fuzzy msgid "You are not subscribed to that profile." -msgstr "Du skickade inte oss den profilen" +msgstr "Du är inte prenumerat hos den profilen." #: actions/subedit.php:83 -#, fuzzy msgid "Could not save subscription." -msgstr "Kunde inte skapa prenumeration." +msgstr "Kunde inte spara prenumeration." #: actions/subscribe.php:55 -#, fuzzy msgid "Not a local user." -msgstr "Ingen sådan användare" +msgstr "Inte en lokal användare." #: actions/subscribe.php:69 -#, fuzzy msgid "Subscribed" -msgstr "Prenumerera" +msgstr "Prenumerant" #: actions/subscribers.php:50 -#, fuzzy, php-format +#, php-format msgid "%s subscribers" -msgstr "Prenumerant" +msgstr "%s prenumeranter" #: actions/subscribers.php:52 #, php-format msgid "%s subscribers, page %d" -msgstr "" +msgstr "%s prenumeranter, sida %d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "Dessa personer är dom som lyssnar på dina inlägg." +msgstr "Det är dessa personer som lyssnar på dina notiser." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "Dessa personer är dom som lyssnar på %s inlägg." +msgstr "Det är dessa personer som lyssnar på %ss notiser." #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" msgstr "" +"Du har inga prenumeranter. Prova att prenumerera på personer du känner och " +"de kommer kanske återgälda tjänsten" #: actions/subscribers.php:110 #, php-format msgid "%s has no subscribers. Want to be the first?" -msgstr "" +msgstr "%s har inte några prenumeranter. Vill du bli först?" #: actions/subscribers.php:114 #, php-format @@ -3517,25 +3514,27 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"%s har inte några prenumeranter. Varför inte [registrera ett konto](%%%%" +"action.register%%%%) och bli först?" #: actions/subscriptions.php:52 -#, fuzzy, php-format +#, php-format msgid "%s subscriptions" -msgstr "Alla prenumerationer" +msgstr "%s prenumerationer" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%s subscriptions, page %d" -msgstr "Alla prenumerationer" +msgstr "%s prenumerationer, sida %d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "Detta är personer och inlägg som du lyssnar på." +msgstr "Dessa är de personer vars notiser du lyssnar på." #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "Detta är personer och inlägg som %s lyssnar på." +msgstr "Dessa är de personer vars notiser %s lyssnar på." #: actions/subscriptions.php:121 #, php-format @@ -3548,153 +3547,148 @@ msgid "" msgstr "" #: actions/subscriptions.php:123 actions/subscriptions.php:127 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1$s lyssnar nu på dina meddelanden i %2$s." +msgstr "%s lyssnar inte på någon." #: actions/subscriptions.php:194 -#, fuzzy msgid "Jabber" -msgstr "Inget Jabber ID." +msgstr "Jabber" #: actions/subscriptions.php:199 lib/connectsettingsaction.php:115 msgid "SMS" msgstr "SMS" #: actions/tagother.php:33 -#, fuzzy msgid "Not logged in" -msgstr "Inte inloggad." +msgstr "Inte inloggad" #: actions/tagother.php:39 -#, fuzzy msgid "No id argument." -msgstr "Inget sådant dokument." +msgstr "Inget ID-argument." #: actions/tagother.php:65 -#, fuzzy, php-format +#, php-format msgid "Tag %s" -msgstr "Taggar" +msgstr "Tagg %s" #: actions/tagother.php:77 lib/userprofile.php:75 -#, fuzzy msgid "User profile" -msgstr "Användaren har ingen profil." +msgstr "Användarprofil" #: actions/tagother.php:81 lib/userprofile.php:102 msgid "Photo" -msgstr "" +msgstr "Foto" #: actions/tagother.php:141 -#, fuzzy msgid "Tag user" -msgstr "Taggar" +msgstr "Tagga användare" #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" +"Taggar för denna användare (bokstäver, nummer, -, ., och _), separerade med " +"kommatecken eller mellanslag" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." msgstr "" +"Du kan bara tagga personer du prenumererar på eller som prenumererar på dig." #: actions/tagother.php:200 -#, fuzzy msgid "Could not save tags." -msgstr "Kunde inte spara informationen om användarbild" +msgstr "Kunde inte spara taggar." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" +"Använd detta formulär för att lägga till taggar till dina prenumeranter " +"eller prenumerationer." #: actions/tag.php:68 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %s, page %d" -msgstr "Inlägg taggade med %s" +msgstr "Notiser taggade med %s, sida %d" #: actions/tag.php:86 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för tagg %s (RSS 1.0)" #: actions/tag.php:92 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för tagg %s (RSS 2.0)" #: actions/tag.php:98 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Inlägg flöde för %s" +msgstr "Flöde av notiser för tagg %s (Atom)" #: actions/tagrss.php:35 -#, fuzzy msgid "No such tag." -msgstr "Inget sådant meddelande." +msgstr "Ingen sådan tagg." #: actions/twitapitrends.php:87 msgid "API method under construction." msgstr "API-metoden är under uppbyggnad." #: actions/unblock.php:59 -#, fuzzy msgid "You haven't blocked that user." -msgstr "Du prenumererar redan på dessa användare:" +msgstr "Du har inte blockerat denna användared." #: actions/unsandbox.php:72 #, fuzzy msgid "User is not sandboxed." -msgstr "Användaren har ingen profil." +msgstr "Användare är inte flyttad till sandlåda." #: actions/unsilence.php:72 -#, fuzzy msgid "User is not silenced." -msgstr "Användaren har ingen profil." +msgstr "Användare är inte nedtystad." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile id in request." -msgstr "Ingen profil URL lämnades ut av servern." +msgstr "Ingen profil-ID i begäran." #: actions/unsubscribe.php:84 -#, fuzzy msgid "No profile with that id." -msgstr "Ingen status hittad med det ID" +msgstr "Ingen profil med det ID:t." #: actions/unsubscribe.php:98 -#, fuzzy msgid "Unsubscribed" -msgstr "Lämnar pren." +msgstr "Prenumeration avslutad" #: actions/updateprofile.php:62 actions/userauthorization.php:330 #, php-format msgid "Listenee stream license ‘%s’ is not compatible with site license ‘%s’." msgstr "" +"Licensen för lyssnarströmmen '%s' är inte förenlig med webbplatslicensen '%" +"s'." #: actions/useradminpanel.php:58 lib/adminpanelaction.php:305 #: lib/personalgroupnav.php:115 msgid "User" -msgstr "" +msgstr "Användare" #: actions/useradminpanel.php:69 msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Användarinställningar för denna StatusNet-webbplats" #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." -msgstr "" +msgstr "Ogiltig begränsning av biografi. Måste vara numerisk." #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." -msgstr "" +msgstr "Ogiltig välkomsttext. Maximal längd är 255 tecken." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "Ogiltig standardprenumeration: '%1$s' är inte användare." #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:108 #: lib/personalgroupnav.php:109 @@ -3703,89 +3697,83 @@ msgstr "Profil" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "" +msgstr "Begränsning av biografi" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "" +msgstr "Maximal teckenlängd av profilbiografi." #: actions/useradminpanel.php:231 -#, fuzzy msgid "New users" -msgstr "Bjud in nya användare" +msgstr "Nya användare" #: actions/useradminpanel.php:235 msgid "New user welcome" -msgstr "" +msgstr "Välkomnande av ny användare" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Välkomsttext för nya användare (max 255 tecken)." #: actions/useradminpanel.php:241 -#, fuzzy msgid "Default subscription" -msgstr "Alla prenumerationer" +msgstr "Standardprenumerationer" #: actions/useradminpanel.php:242 -#, fuzzy msgid "Automatically subscribe new users to this user." msgstr "" -"Automatisk prenummeration på den som prenumererar på mig. (Bäst för icke " -"mänsklig användare) " +"Lägg automatiskt till en prenumeration på denna användare för alla nya " +"användare." #: actions/useradminpanel.php:251 -#, fuzzy msgid "Invitations" -msgstr "Inbjudan(ar) skickad" +msgstr "Inbjudningar" #: actions/useradminpanel.php:256 -#, fuzzy msgid "Invitations enabled" -msgstr "Inbjudan(ar) skickad" +msgstr "Inbjudningar aktiverade" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." -msgstr "" +msgstr "Hurvida användare skall tillåtas bjuda in nya användare." #: actions/useradminpanel.php:265 msgid "Sessions" -msgstr "" +msgstr "Sessioner" #: actions/useradminpanel.php:270 msgid "Handle sessions" -msgstr "" +msgstr "Hantera sessioner" #: actions/useradminpanel.php:272 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "Hurvida sessioner skall hanteras av oss själva." #: actions/useradminpanel.php:276 msgid "Session debugging" -msgstr "" +msgstr "Sessionsfelsökning" #: actions/useradminpanel.php:278 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "Sätt på felsökningsutdata för sessioner." #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "Tillåt prenumeration." +msgstr "Godkänn prenumeration" #: 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 "" -"Kontrollera dessa detajer noga så att du verkligen vet att du vill " -"prenumerera på denna användares inlägg. Om du inte frågade efter att " -"prenumerera på någons inlägg, klicka på \"Cancel\"" +"Vänligen kontrollera dessa uppgifter för att försäkra dig om att du vill " +"prenumerera på den här användarens notiser. Om du inte bett att prenumerera " +"på någons meddelanden, klicka på \"Avvisa\"." #: actions/userauthorization.php:188 msgid "License" -msgstr "" +msgstr "Licens" #: actions/userauthorization.php:209 msgid "Accept" @@ -3793,101 +3781,98 @@ msgstr "Acceptera" #: actions/userauthorization.php:210 lib/subscribeform.php:115 #: lib/subscribeform.php:139 -#, fuzzy msgid "Subscribe to this user" -msgstr "Prenumerera på mina Twitter vänner här." +msgstr "Prenumerera på denna användare" #: actions/userauthorization.php:211 msgid "Reject" msgstr "Avvisa" #: actions/userauthorization.php:212 -#, fuzzy msgid "Reject this subscription" -msgstr "Alla prenumerationer" +msgstr "Avvisa denna prenumeration" #: actions/userauthorization.php:225 msgid "No authorization request!" -msgstr "Ingen rättighet förfrågan!" +msgstr "Ingen auktoriseringsförfrågan!" #: actions/userauthorization.php:247 msgid "Subscription authorized" -msgstr "Prenumeration accepterad" +msgstr "Prenumeration godkänd" #: actions/userauthorization.php:249 -#, fuzzy msgid "" "The subscription has been authorized, but no callback URL was passed. Check " "with the site’s instructions for details on how to authorize the " "subscription. Your subscription token is:" msgstr "" "Prenumerationen har blivit bekräftad, men ingen URL har gått igenom. Kolla " -"med sidans instruktioner hur du bekräftar en prenumeration. Din " -"prenumerering token är:" +"med webbplatsens instruktioner hur du bekräftar en prenumeration. Din " +"prenumerations-token är:" #: actions/userauthorization.php:259 msgid "Subscription rejected" msgstr "Prenumeration avvisad" #: actions/userauthorization.php:261 -#, fuzzy msgid "" "The subscription has been rejected, but no callback URL was passed. Check " "with the site’s instructions for details on how to fully reject the " "subscription." msgstr "" -"Prenumerationen har blivit avvisad, men inga URL har gått igenom. Kolla med " -"sidans instruktioner hur du avvisar en prenumeration." +"Prenumerationen har blivit avvisad, men ingen URL har gått igenom. Kolla med " +"webbplatsens instruktioner för detaljer om hur du fullständingt avvisar " +"prenumerationen." #: actions/userauthorization.php:296 #, php-format msgid "Listener URI ‘%s’ not found here" -msgstr "" +msgstr "Lyssnar-URI '%s' hittades inte här" #: actions/userauthorization.php:301 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "Lyssnar-URI '%s' är för lång." #: actions/userauthorization.php:307 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "Lyssnar-URI '%s' är en lokal användare." #: actions/userauthorization.php:322 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "Profil-URL ‘%s’ är för en lokal användare." #: actions/userauthorization.php:338 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "Avatar-URL ‘%s’ är inte giltig." #: actions/userauthorization.php:343 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "Kan inte läsa användarbild URL '%s'" +msgstr "Kan inte läsa avatar-URL '%s'." #: actions/userauthorization.php:348 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Fel filtyp för bild '%s'" +msgstr "Fel bildtyp för avatar-URL '%s'." #: actions/userbyid.php:70 msgid "No id." -msgstr "Inget id." +msgstr "Ingen ID." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "Profil inställningar" +msgstr "Profilutseende" #: 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 "" +"Anpassa hur din profil ser ut genom att välja bakgrundbild och färgpalett." #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" @@ -3896,21 +3881,22 @@ msgstr "" #: actions/usergroups.php:64 #, php-format msgid "%s groups, page %d" -msgstr "" +msgstr "%s grupper, sida %d" #: actions/usergroups.php:130 msgid "Search for more groups" -msgstr "" +msgstr "Sök efter fler grupper" #: actions/usergroups.php:153 -#, fuzzy, php-format +#, php-format msgid "%s is not a member of any group." -msgstr "Du skickade inte oss den profilen" +msgstr "%s är inte en medlem i någon grupp." #: actions/usergroups.php:158 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." msgstr "" +"Prova att [söka efter grupper](%%action.groupsearch%%) och gå med i dem." #: classes/File.php:137 #, php-format @@ -3918,91 +3904,92 @@ msgid "" "No file may be larger than %d bytes and the file you sent was %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:147 #, php-format msgid "A file this large would exceed your user quota of %d bytes." -msgstr "" +msgstr "En så här stor fil skulle överskrida din användarkvot på %d byte." #: classes/File.php:154 #, php-format msgid "A file this large would exceed your monthly quota of %d bytes." -msgstr "" +msgstr "En sådan här stor fil skulle överskrida din månatliga kvot på %d byte." #: classes/Message.php:45 msgid "You are banned from sending direct messages." -msgstr "" +msgstr "Du är utestängd från att skicka direktmeddelanden." #: classes/Message.php:61 msgid "Could not insert message." -msgstr "" +msgstr "Kunde inte infoga meddelande." #: classes/Message.php:71 msgid "Could not update message with new URI." -msgstr "" +msgstr "Kunde inte uppdatera meddelande med ny URI." #: classes/Notice.php:164 #, php-format msgid "DB error inserting hashtag: %s" -msgstr "DB error vid infog av hashtag: %s" +msgstr "Databasfel vid infogning av hashtag: %s" #: classes/Notice.php:179 -#, fuzzy msgid "Problem saving notice. Too long." -msgstr "Det var ett problem när inlägget sparades." +msgstr "Problem vid sparande av notis. För långt." #: classes/Notice.php:183 -#, fuzzy msgid "Problem saving notice. Unknown user." -msgstr "Det var ett problem när inlägget sparades." +msgstr "Problem vid sparande av notis. Okänd användare." #: classes/Notice.php:188 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:194 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" +"För många duplicerade meddelanden för snabbt; ta en vilopaus och posta igen " +"om ett par minuter." #: classes/Notice.php:200 msgid "You are banned from posting notices on this site." -msgstr "" +msgstr "Du är utestängd från att posta notiser på denna webbplats." #: classes/Notice.php:265 classes/Notice.php:290 msgid "Problem saving notice." -msgstr "Det var ett problem när inlägget sparades." +msgstr "Problem med att spara notis." #: classes/Notice.php:1124 #, php-format msgid "DB error inserting reply: %s" -msgstr "Databasfel för svar: %s" +msgstr "Databasfel vid infogning av svar: %s" #: classes/User_group.php:380 -#, fuzzy msgid "Could not create group." -msgstr "Kunde inte skapa favorit." +msgstr "Kunde inte skapa grupp." #: classes/User_group.php:409 -#, fuzzy msgid "Could not set group membership." -msgstr "Kunde inte skapa prenumeration." +msgstr "Kunde inte ställa in gruppmedlemskap." #: classes/User.php:347 -#, fuzzy, php-format +#, php-format msgid "Welcome to %1$s, @%2$s!" -msgstr "Meddelande till %1$s på %2$s" +msgstr "Välkommen till %1$s, @%2$s!" #: lib/accountsettingsaction.php:108 msgid "Change your profile settings" msgstr "Ändra dina profilinställningar" #: lib/accountsettingsaction.php:112 -#, fuzzy msgid "Upload an avatar" -msgstr "Uppdatering av profilbild misslyckades." +msgstr "Ladda upp en avatar" #: lib/accountsettingsaction.php:116 msgid "Change your password" @@ -4010,33 +3997,32 @@ msgstr "Ändra ditt lösenord" #: lib/accountsettingsaction.php:120 msgid "Change email handling" -msgstr "Ändra email hantering" +msgstr "Ändra e-posthantering" #: lib/accountsettingsaction.php:124 -#, fuzzy msgid "Design your profile" -msgstr "Användaren har ingen profil." +msgstr "Designa din profil" #: lib/accountsettingsaction.php:128 msgid "Other" -msgstr "" +msgstr "Övrigt" #: lib/accountsettingsaction.php:128 msgid "Other options" -msgstr "" +msgstr "Övriga alternativ" #: lib/action.php:144 -#, fuzzy, php-format +#, php-format msgid "%s - %s" -msgstr "%s(%s)" +msgstr "%s - %s" #: lib/action.php:159 msgid "Untitled page" -msgstr "" +msgstr "Namnlös sida" #: lib/action.php:425 msgid "Primary site navigation" -msgstr "" +msgstr "Primär webbplatsnavigation" #: lib/action.php:431 msgid "Home" @@ -4044,42 +4030,36 @@ msgstr "Hem" #: lib/action.php:431 msgid "Personal profile and friends timeline" -msgstr "" +msgstr "Personlig profil och vänners tidslinje" #: lib/action.php:433 -#, fuzzy msgid "Account" -msgstr "Om" +msgstr "Konto" #: lib/action.php:433 -#, fuzzy msgid "Change your email, avatar, password, profile" -msgstr "Ändra ditt lösenord" +msgstr "Ändra din e-post, avatar, lösenord, profil" #: lib/action.php:436 msgid "Connect" msgstr "Anslut" #: lib/action.php:436 -#, fuzzy msgid "Connect to services" -msgstr "Kunde inte skicka vidare till servern: %s" +msgstr "Anslut till tjänster" #: lib/action.php:440 -#, fuzzy msgid "Change site configuration" -msgstr "Prenumerationer" +msgstr "Ändra webbplatskonfiguration" #: lib/action.php:444 lib/subgroupnav.php:105 msgid "Invite" msgstr "Bjud in" #: lib/action.php:445 lib/subgroupnav.php:106 -#, fuzzy, php-format +#, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "" -"Använd detta formulär för att bjuda in dina vänner och kollegor till denna " -"sida." +msgstr "Bjud in vänner och kollegor att gå med dig på %s" #: lib/action.php:450 msgid "Logout" @@ -4087,25 +4067,23 @@ msgstr "Logga ut" #: lib/action.php:450 msgid "Logout from the site" -msgstr "" +msgstr "Logga ut från webbplatsen" #: lib/action.php:455 -#, fuzzy msgid "Create an account" -msgstr "Skapa ett nytt konto" +msgstr "Skapa ett konto" #: lib/action.php:458 msgid "Login to the site" -msgstr "" +msgstr "Logga in på webbplatsen" #: lib/action.php:461 lib/action.php:724 msgid "Help" msgstr "Hjälp" #: lib/action.php:461 -#, fuzzy msgid "Help me!" -msgstr "Hjälp" +msgstr "Hjälp mig!" #: lib/action.php:464 lib/searchaction.php:127 msgid "Search" @@ -4113,26 +4091,23 @@ msgstr "Sök" #: lib/action.php:464 msgid "Search for people or text" -msgstr "" +msgstr "Sök efter personer eller text" #: lib/action.php:485 -#, fuzzy msgid "Site notice" -msgstr "Nytt inlägg" +msgstr "Webbplatsnotis" #: lib/action.php:551 msgid "Local views" -msgstr "" +msgstr "Lokala vyer" #: lib/action.php:617 -#, fuzzy msgid "Page notice" -msgstr "Nytt inlägg" +msgstr "Sidnotis" #: lib/action.php:719 -#, fuzzy msgid "Secondary site navigation" -msgstr "Prenumerationer" +msgstr "Sekundär webbplatsnavigation" #: lib/action.php:726 msgid "About" @@ -4144,11 +4119,11 @@ msgstr "Frågor & svar" #: lib/action.php:732 msgid "TOS" -msgstr "" +msgstr "Användarvillkor" #: lib/action.php:735 msgid "Privacy" -msgstr "Sekretesspolicy" +msgstr "Sekretess" #: lib/action.php:737 msgid "Source" @@ -4156,15 +4131,15 @@ msgstr "Källa" #: lib/action.php:739 msgid "Contact" -msgstr "Kontakta" +msgstr "Kontakt" #: lib/action.php:741 msgid "Badge" -msgstr "" +msgstr "Emblem" #: lib/action.php:769 msgid "StatusNet software license" -msgstr "" +msgstr "Programvarulicens för StatusNet" #: lib/action.php:772 #, php-format @@ -4172,13 +4147,13 @@ msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%). " msgstr "" -"**%%site.name%%** är en mikroblogg service för dig ifrån [%%site.broughtby%%]" -"(%%site.broughtbyurl%%)" +"**%%site.name%%** är en mikrobloggtjänst tillhandahållen av [%%site.broughtby" +"%%](%%site.broughtbyurl%%)" #: lib/action.php:774 #, php-format msgid "**%%site.name%%** is a microblogging service. " -msgstr "**%%site.name%%** är en mikroblogg service." +msgstr "**%%site.name%%** är en mikrobloggtjänst." #: lib/action.php:776 #, php-format @@ -4187,125 +4162,115 @@ msgid "" "s, available under the [GNU Affero General Public License](http://www.fsf." "org/licensing/licenses/agpl-3.0.html)." msgstr "" -"Det drivs med [StatusNet](http://status.net/) mikroblogging software, " -"version %s, tillgängligt under [GNU Affero General Public License](http://" -"www.fsf.org/licensing/licenses/agpl-3.0.html)." +"Den drivs med mikroblogg-programvaran [StatusNet](http://status.net/), " +"version %s, tillgänglig under [GNU Affero General Public License](http://www." +"fsf.org/licensing/licenses/agpl-3.0.html)." #: lib/action.php:790 -#, fuzzy msgid "Site content license" -msgstr "Sök innehåll i inlägg" +msgstr "Licens för webbplatsinnehåll" #: lib/action.php:799 msgid "All " -msgstr "" +msgstr "Alla " #: lib/action.php:804 msgid "license." -msgstr "" +msgstr "licens." #: lib/action.php:1068 msgid "Pagination" -msgstr "" +msgstr "Numrering av sidor" #: lib/action.php:1077 -#, fuzzy msgid "After" -msgstr "« Nyare" +msgstr "Senare" #: lib/action.php:1085 -#, fuzzy msgid "Before" -msgstr "Tidigare »" +msgstr "Tidigare" #: lib/action.php:1133 -#, fuzzy msgid "There was a problem with your session token." -msgstr "Det var något problem med din session. Försök igen, tack." +msgstr "Det var ett problem med din sessions-token." #: lib/adminpanelaction.php:96 -#, fuzzy msgid "You cannot make changes to this site." -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Du kan inte göra förändringar av denna webbplats." #: lib/adminpanelaction.php:195 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm() är inte implementerat." #: lib/adminpanelaction.php:224 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSetting() är inte implementerat." #: lib/adminpanelaction.php:247 -#, fuzzy msgid "Unable to delete design setting." -msgstr "Kunde inte spara dina Twitter inställningar!" +msgstr "Kunde inte ta bort utseendeinställning." #: lib/adminpanelaction.php:300 -#, fuzzy msgid "Basic site configuration" -msgstr "Bekräfta epostadress" +msgstr "Grundläggande webbplatskonfiguration" #: lib/adminpanelaction.php:303 -#, fuzzy msgid "Design configuration" -msgstr "SMS Bekräftelse" +msgstr "Konfiguration av utseende" #: lib/adminpanelaction.php:306 lib/adminpanelaction.php:309 -#, fuzzy msgid "Paths configuration" -msgstr "SMS Bekräftelse" +msgstr "Konfiguration av sökvägar" #: lib/attachmentlist.php:87 msgid "Attachments" -msgstr "" +msgstr "Bilagor" #: lib/attachmentlist.php:265 msgid "Author" -msgstr "" +msgstr "Författare" #: lib/attachmentlist.php:278 -#, fuzzy msgid "Provider" -msgstr "Profil" +msgstr "Tillhandahållare" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "Notiser där denna bilaga förekommer" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" -msgstr "" +msgstr "Taggar för denna billaga" #: lib/channel.php:138 lib/channel.php:158 msgid "Command results" -msgstr "" +msgstr "Resultat av kommando" #: lib/channel.php:210 msgid "Command complete" -msgstr "" +msgstr "Kommando komplett" #: lib/channel.php:221 msgid "Command failed" -msgstr "" +msgstr "Kommando misslyckades" #: lib/command.php:44 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Ledsen, detta kommando är inte implementerat än." #: lib/command.php:88 -#, fuzzy, php-format +#, php-format msgid "Could not find a user with nickname %s" -msgstr "Kunde inte uppdatera användaren med bekräftad emailadress." +msgstr "Kunde inte hitta en användare med smeknamnet %s" #: lib/command.php:92 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "Det verkar inte vara särskilt meningsfullt att knuffa dig själv!" #: lib/command.php:99 #, php-format msgid "Nudge sent to %s" -msgstr "" +msgstr "Knuff skickad till %s" #: lib/command.php:126 #, php-format @@ -4314,28 +4279,31 @@ msgid "" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Prenumerationer: %1$s\n" +"Prenumeranter: %2$s\n" +"Notiser: %3$s" #: lib/command.php:152 lib/command.php:400 msgid "Notice with that id does not exist" -msgstr "" +msgstr "Notis med den ID:n finns inte" #: lib/command.php:168 lib/command.php:416 lib/command.php:471 msgid "User has no last notice" -msgstr "" +msgstr "Användare har ingen sista notis" #: lib/command.php:190 msgid "Notice marked as fave." -msgstr "" +msgstr "Notis markerad som favorit." #: lib/command.php:315 #, php-format msgid "%1$s (%2$s)" -msgstr "%1$s (%2$s)" +msgstr "" #: lib/command.php:318 #, php-format msgid "Fullname: %s" -msgstr "Fullt namn: %s" +msgstr "Fullständigt namn: %s" #: lib/command.php:321 #, php-format @@ -4355,99 +4323,109 @@ msgstr "Om: %s" #: lib/command.php:358 scripts/xmppdaemon.php:321 #, php-format msgid "Message too long - maximum is %d characters, you sent %d" -msgstr "" +msgstr "Meddelande för långt - maximum är %d tecken, du skickade %d" #: lib/command.php:377 msgid "Error sending direct message." -msgstr "" +msgstr "Fel vid sändning av direktmeddelande." #: lib/command.php:431 #, php-format msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" +msgstr "Notis för långt - maximum är %d tecken, du skickade %d" #: lib/command.php:439 -#, fuzzy, php-format +#, php-format msgid "Reply to %s sent" -msgstr "Svara på detta inlägg" +msgstr "Svar på %s skickat" #: lib/command.php:441 -#, fuzzy msgid "Error saving notice." -msgstr "Det var ett problem när inlägget sparades." +msgstr "Fel vid sparande av notis." #: lib/command.php:495 msgid "Specify the name of the user to subscribe to" -msgstr "" +msgstr "Ange namnet på användaren att prenumerara på" #: lib/command.php:502 #, php-format msgid "Subscribed to %s" -msgstr "" +msgstr "Prenumerar på %s" #: lib/command.php:523 msgid "Specify the name of the user to unsubscribe from" -msgstr "" +msgstr "Ange namnet på användaren att avsluta prenumeration på" #: lib/command.php:530 #, php-format msgid "Unsubscribed from %s" -msgstr "" +msgstr "Prenumeration hos %s avslutad" #: lib/command.php:548 lib/command.php:571 msgid "Command not yet implemented." -msgstr "" +msgstr "Kommando inte implementerat än." #: lib/command.php:551 msgid "Notification off." -msgstr "" +msgstr "Notifikation av." #: lib/command.php:553 msgid "Can't turn off notification." -msgstr "" +msgstr "Kan inte sätta på notifikation." #: lib/command.php:574 msgid "Notification on." -msgstr "" +msgstr "Notifikation på." #: lib/command.php:576 msgid "Can't turn on notification." +msgstr "Kan inte stänga av notifikation." + +#: lib/command.php:588 +msgid "Login command is disabled" msgstr "" -#: lib/command.php:592 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Du skickade inte oss den profilen" +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Kunde inte skapa alias." -#: lib/command.php:594 +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 +msgid "You are not subscribed to anyone." +msgstr "Du prenumererar inte på någon." + +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "Du prenumererar redan på dessa användare:" -msgstr[1] "Du prenumererar redan på dessa användare:" +msgstr[0] "Du prenumererar på denna person:" +msgstr[1] "Du prenumererar på dessa personer:" -#: lib/command.php:614 -#, fuzzy +#: lib/command.php:645 msgid "No one is subscribed to you." -msgstr "Kunde inte prenumerera på annat åt dig." +msgstr "Ingen prenumerar på dig." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "Kunde inte prenumerera på annat åt dig." -msgstr[1] "Kunde inte prenumerera på annat åt dig." +msgstr[0] "Denna person prenumererar på dig:" +msgstr[1] "Dessa personer prenumererar på dig:" -#: lib/command.php:636 -#, fuzzy +#: lib/command.php:667 msgid "You are not a member of any groups." -msgstr "Du skickade inte oss den profilen" +msgstr "Du är inte medlem i några grupper." -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -msgstr[0] "Du skickade inte oss den profilen" -msgstr[1] "Du skickade inte oss den profilen" +msgstr[0] "Du är en medlem i denna grupp:" +msgstr[1] "Du är en medlem i dessa grupper:" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4466,6 +4444,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -4486,21 +4465,20 @@ msgid "" msgstr "" #: lib/common.php:199 -#, fuzzy msgid "No configuration file found. " -msgstr "Ingen bekräftelsekod." +msgstr "Ingen konfigurationsfil hittades. " #: lib/common.php:200 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "Jag letade efter konfigurationsfiler på följande platser: " #: lib/common.php:201 msgid "You may wish to run the installer to fix this." -msgstr "" +msgstr "Du kanske vill köra installeraren för att åtgärda detta." #: lib/common.php:202 msgid "Go to the installer." -msgstr "" +msgstr "Gå till installeraren." #: lib/connectsettingsaction.php:110 msgid "IM" @@ -4508,7 +4486,7 @@ msgstr "IM" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "Uppdateringar via instant messenger (IM)" +msgstr "Uppdateringar via snabbmeddelande (IM)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" @@ -4516,170 +4494,159 @@ msgstr "Uppdateringar via SMS" #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +msgstr "Databasfel" #: lib/designsettings.php:105 -#, fuzzy msgid "Upload file" -msgstr "Ladda upp" +msgstr "Ladda upp fil" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "Du kan uppdatera din personliga profil här" +msgstr "" +"Du kan ladda upp din personliga bakgrundbild. Den maximala filstorleken är " +"2MB." #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "" +msgstr "Standardvärden för utseende återställda." #: lib/disfavorform.php:114 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor this notice" -msgstr "%s favoriter" +msgstr "Avmarkera denna notis som favorit" #: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy msgid "Favor this notice" -msgstr "%s favoriter" +msgstr "Markera denna notis som favorit" #: lib/favorform.php:140 msgid "Favor" -msgstr "Favorisera" +msgstr "Markera som favorit" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "Exportdata" #: 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/galleryaction.php:121 -#, fuzzy msgid "Filter tags" -msgstr "Feed för taggar %s" +msgstr "Filtrera taggar" #: lib/galleryaction.php:131 msgid "All" -msgstr "" +msgstr "Alla" #: lib/galleryaction.php:139 -#, fuzzy msgid "Select tag to filter" -msgstr "Välj en operatör" +msgstr "Välj tagg att filtrera" #: lib/galleryaction.php:140 -#, fuzzy msgid "Tag" -msgstr "Taggar" +msgstr "Tagg" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "" +msgstr "Välj en tagg för att begränsa lista" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Gå" #: lib/groupeditform.php:163 -#, fuzzy msgid "URL of the homepage or blog of the group or topic" -msgstr "URL till din hemsida, blog eller profil på en annan sida." +msgstr "URL till gruppen eller ämnets hemsida eller blogg" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "Berätta om dig själv och dina intressen inom 140 tecken" +msgstr "Beskriv gruppen eller ämnet" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Berätta om dig själv och dina intressen inom 140 tecken" +msgstr "Beskriv gruppen eller ämnet med högst %d tecken" #: lib/groupeditform.php:172 -#, fuzzy msgid "Description" -msgstr "Prenumerationer" +msgstr "Beskrivning" #: lib/groupeditform.php:179 -#, fuzzy msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "Var du håller till, såsom \"Stad, Län, Land\"" +msgstr "Plats för gruppen, om den finns, såsom \"Stad, Län, Land\"" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" -msgstr "" +msgstr "Extra smeknamn för gruppen, komma- eller mellanslagsseparerade, max &d" #: lib/groupnav.php:85 msgid "Group" -msgstr "" +msgstr "Grupp" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "Ingen sådan användare" +msgstr "Blockerad" #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "Ingen sådan användare" +msgstr "%s blockerade användare" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Redigera %s gruppegenskaper" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Logga ut" +msgstr "Logotyp" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "" +msgstr "Lägg till eller redigera %s logotyp" #: lib/groupnav.php:120 #, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "Lägg till eller redigera %s utseende" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" -msgstr "" +msgstr "Grupper med flest medlemmar" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" -msgstr "" +msgstr "Grupper med flest inlägg" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "Taggar i %s grupps notiser" #: lib/htmloutputter.php:103 msgid "This page is not available in a media type you accept" msgstr "Denna sida är inte tillgänglig i den mediatyp du accepterat" #: lib/imagefile.php:75 -#, fuzzy, php-format +#, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "Du kan uppdatera din personliga profil här" +msgstr "Denna fil är för stor. Den maximala filstorleken är %s." #: lib/imagefile.php:80 msgid "Partial upload." @@ -4687,33 +4654,31 @@ msgstr "Bitvis uppladdad." #: lib/imagefile.php:88 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "Systemfel när filen laddades upp." +msgstr "Systemfel vid uppladdning av fil." #: lib/imagefile.php:96 msgid "Not an image or corrupt file." -msgstr "Det verkar inte vara en bildfil, annars korrupt." +msgstr "Inte en bildfil eller så är filen korrupt." #: lib/imagefile.php:105 msgid "Unsupported image file format." msgstr "Bildfilens format stödjs inte." #: lib/imagefile.php:118 -#, fuzzy msgid "Lost our file." -msgstr "Inget sådant inlägg." +msgstr "Förlorade vår fil." #: lib/imagefile.php:150 lib/imagefile.php:197 -#, fuzzy msgid "Unknown file type" -msgstr "okänd fil typ" +msgstr "Okänd filtyp" #: lib/imagefile.php:217 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:219 msgid "kB" -msgstr "" +msgstr "kB" #: lib/jabber.php:191 #, php-format @@ -4721,43 +4686,41 @@ msgid "[%s]" msgstr "" #: lib/joinform.php:114 -#, fuzzy msgid "Join" -msgstr "Logga in" +msgstr "Gå med" #: lib/leaveform.php:114 -#, fuzzy msgid "Leave" -msgstr "Spara" +msgstr "Lämna" #: lib/logingroupnav.php:80 -#, fuzzy msgid "Login with a username and password" -msgstr "Logga in med ditt användarnamn och lösenord." +msgstr "Logga in med ett användarnamn och lösenord" #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "Skapa ett nytt konto" +msgstr "Registrera dig för ett nytt konto" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "Bara användaren kan läsa sina egna brevlådor." #: 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 "" +"Du har inga privata meddelanden. Du kan skicka privata meddelanden för att " +"engagera andra användare i konversationen. Folk kan skicka meddelanden till " +"dig som bara du ser." #: lib/mailbox.php:227 lib/noticelist.php:452 -#, fuzzy msgid "from" msgstr "från" #: lib/mail.php:172 msgid "Email address confirmation" -msgstr "Bekräfta epostadress" +msgstr "E-postadressbekräftelse" #: lib/mail.php:174 #, php-format @@ -4779,10 +4742,10 @@ msgstr "" #: lib/mail.php:236 #, php-format msgid "%1$s is now listening to your notices on %2$s." -msgstr "%1$s lyssnar nu på dina meddelanden i %2$s." +msgstr "%1$s lyssnar nu på dina notiser på %2$s." #: lib/mail.php:241 -#, fuzzy, php-format +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -4795,18 +4758,14 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s lyssnar nu på dina meddelanden i %1$s.\n" -"\n" -"\tHälsningar,\n" -"%4$s.\n" #: lib/mail.php:254 -#, fuzzy, php-format +#, php-format msgid "Location: %s\n" msgstr "Plats: %s\n" #: lib/mail.php:256 -#, fuzzy, php-format +#, php-format msgid "Homepage: %s\n" msgstr "Hemsida: %s\n" @@ -4816,11 +4775,13 @@ msgid "" "Bio: %s\n" "\n" msgstr "" +"Biografi: %s\n" +"\n" #: lib/mail.php:286 #, php-format msgid "New email address for posting to %s" -msgstr "Ny emailadress för att skicka till %s" +msgstr "Ny e-postadress för att skicka till %s" #: lib/mail.php:289 #, php-format @@ -4834,13 +4795,13 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"Du har en ny adress %1$s.\n" +"Du har en ny adress på %1$s.\n" "\n" -"Skicka email till %2$s för att göra ett nytt inlägg.\n" +"Skicka e-post till %2$s för att posta nya meddelanden.\n" "\n" -"Mer information får du på %3$s.\n" +"Mer e-postinstruktioner på %3$s.\n" "\n" -"Mvh,\n" +"Med vänliga hälsningar,\n" "%4$s" #: lib/mail.php:413 @@ -4850,12 +4811,12 @@ msgstr "%s status" #: lib/mail.php:439 msgid "SMS confirmation" -msgstr "SMS Bekräftelse" +msgstr "SMS-bekräftelse" #: lib/mail.php:463 -#, fuzzy, php-format +#, php-format msgid "You've been nudged by %s" -msgstr "Du är identifierad. Skriv in" +msgstr "Du har blivit knuffad av %s" #: lib/mail.php:467 #, php-format @@ -4876,7 +4837,7 @@ msgstr "" #: lib/mail.php:510 #, php-format msgid "New private message from %s" -msgstr "" +msgstr "Nytt privat meddelande från %s" #: lib/mail.php:514 #, php-format @@ -4898,9 +4859,9 @@ msgid "" msgstr "" #: lib/mail.php:559 -#, fuzzy, php-format +#, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "%s la till ditt inlägg som favorit" +msgstr "%s (@%s) lade till din notis som en favorit" #: lib/mail.php:561 #, php-format @@ -4926,7 +4887,7 @@ msgstr "" #: lib/mail.php:620 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +msgstr "%s (@%s) skickade en notis för din uppmärksamhet" #: lib/mail.php:622 #, php-format @@ -4946,73 +4907,74 @@ msgstr "" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" +"Det var ett databasfel vid sparandet av din profil. Var vänlig försök igen." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." msgstr "" +"Den uppladdade filen överstiger upload_max_filesize-direktivet i php.ini." #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" +"Den uppladdade filen överstiger MAX_FILE_SIZE-direktivet som var angivet i " +"HTML-formuläret." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "Den uppladdade filen var bara delvis uppladdad." #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "Saknar en tillfällig mapp." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "Misslyckades att skriva fil till disk." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +msgstr "Filuppladdningen stoppad pga filändelse" #: lib/mediafile.php:179 lib/mediafile.php:216 msgid "File exceeds user's quota!" -msgstr "" +msgstr "Fil överstiger användaren kvot!" #: lib/mediafile.php:196 lib/mediafile.php:233 msgid "File could not be moved to destination directory." -msgstr "" +msgstr "Fil kunde inte flyttas till destinationskatalog." #: lib/mediafile.php:201 lib/mediafile.php:237 msgid "Could not determine file's mime-type!" -msgstr "Kunde inte ta emot favoritinläggen." +msgstr "Kunde inte fastställa filens MIME-typ!" #: lib/mediafile.php:270 #, php-format msgid " Try using another %s format." -msgstr "" +msgstr "Försök använda ett annat %s-format." #: lib/mediafile.php:275 #, php-format msgid "%s is not a supported filetype on this server." -msgstr "" +msgstr "%s är en filtyp som saknar stöd på denna server." #: lib/messageform.php:120 -#, fuzzy msgid "Send a direct notice" -msgstr "Tabort inlägg" +msgstr "Skicka ett direktinlägg" #: lib/messageform.php:146 msgid "To" -msgstr "" +msgstr "Till" #: lib/messageform.php:161 lib/noticeform.php:185 -#, fuzzy msgid "Available characters" -msgstr "Minst 6 tecken" +msgstr "Tillgängliga tecken" #: lib/noticeform.php:158 -#, fuzzy msgid "Send a notice" -msgstr "Skicka ett meddelande" +msgstr "Skicka ett inlägg" #: lib/noticeform.php:171 #, php-format @@ -5021,11 +4983,11 @@ msgstr "Vad är på gång, %s?" #: lib/noticeform.php:192 msgid "Attach" -msgstr "" +msgstr "Bifoga" #: lib/noticeform.php:196 msgid "Attach a file" -msgstr "" +msgstr "Bifoga en fil" #: lib/noticelist.php:403 #, php-format @@ -5033,78 +4995,72 @@ msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" msgstr "" #: lib/noticelist.php:404 -#, fuzzy msgid "N" -msgstr "Nej" +msgstr "N" #: lib/noticelist.php:404 msgid "S" -msgstr "" +msgstr "S" #: lib/noticelist.php:405 msgid "E" -msgstr "" +msgstr "Ö" #: lib/noticelist.php:405 msgid "W" -msgstr "" +msgstr "V" #: lib/noticelist.php:411 msgid "at" -msgstr "" +msgstr "på" #: lib/noticelist.php:506 -#, fuzzy msgid "in context" -msgstr "Inget innehåll!" +msgstr "i sammanhang" #: lib/noticelist.php:526 -#, fuzzy msgid "Reply to this notice" msgstr "Svara på detta inlägg" #: lib/noticelist.php:527 -#, fuzzy msgid "Reply" -msgstr "svar" +msgstr "Svara" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "" +msgstr "Knuffa denna användare" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "" +msgstr "Knuffa" #: lib/nudgeform.php:128 -#, fuzzy msgid "Send a nudge to this user" -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Skicka en knuff till den användaren." #: lib/oauthstore.php:283 msgid "Error inserting new profile" -msgstr "Fel uppstog när nya profilen skulle läggas till" +msgstr "Fel vid infogning av ny profil" #: lib/oauthstore.php:291 msgid "Error inserting avatar" -msgstr "Fel uppstog när användarbild skulle läggas till" +msgstr "Fel vid infogning av avatar" #: lib/oauthstore.php:311 msgid "Error inserting remote profile" -msgstr "Fel uppstog när fjärrprofilen skulle läggas till" +msgstr "Fel vid infogning av fjärrprofilen" #: lib/oauthstore.php:345 -#, fuzzy msgid "Duplicate notice" -msgstr "Tabort inlägg" +msgstr "Duplicera notis" #: lib/oauthstore.php:467 lib/subs.php:48 msgid "You have been banned from subscribing." -msgstr "" +msgstr "Du har blivit utestängd från att prenumerera." #: lib/oauthstore.php:492 msgid "Couldn't insert new subscription." -msgstr "Kunde inte lägga till ny prenumeration." +msgstr "Kunde inte infoga ny prenumeration." #: lib/personalgroupnav.php:99 msgid "Personal" @@ -5116,28 +5072,28 @@ msgstr "Svar" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "" +msgstr "Favoriter" #: lib/personalgroupnav.php:124 msgid "Inbox" -msgstr "" +msgstr "Inkorg" #: lib/personalgroupnav.php:125 msgid "Your incoming messages" -msgstr "" +msgstr "Dina inkommande meddelanden" #: lib/personalgroupnav.php:129 msgid "Outbox" -msgstr "" +msgstr "Utkorg" #: lib/personalgroupnav.php:130 msgid "Your sent messages" -msgstr "" +msgstr "Dina skickade meddelanden" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "Taggar i %ss notiser" #: lib/profileaction.php:109 lib/profileaction.php:192 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -5149,16 +5105,15 @@ msgstr "Alla prenumerationer" #: lib/profileaction.php:140 lib/profileaction.php:201 lib/subgroupnav.php:90 msgid "Subscribers" -msgstr "Prenumerant" +msgstr "Prenumeranter" #: lib/profileaction.php:157 -#, fuzzy msgid "All subscribers" -msgstr "Prenumerant" +msgstr "Alla prenumeranter" #: lib/profileaction.php:178 msgid "User ID" -msgstr "" +msgstr "Användar-ID" #: lib/profileaction.php:183 msgid "Member since" @@ -5166,16 +5121,15 @@ msgstr "Medlem sedan" #: lib/profileaction.php:245 msgid "All groups" -msgstr "" +msgstr "Alla grupper" #: lib/profileformaction.php:123 -#, fuzzy msgid "No return-to arguments" -msgstr "Inget sådant dokument." +msgstr "Inga \"return-to\"-argument" #: lib/profileformaction.php:137 msgid "unimplemented method" -msgstr "" +msgstr "inte implementerad metod" #: lib/publicgroupnav.php:78 msgid "Public" @@ -5183,44 +5137,41 @@ msgstr "Publik" #: lib/publicgroupnav.php:82 msgid "User groups" -msgstr "" +msgstr "Användargrupper" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 -#, fuzzy msgid "Recent tags" -msgstr "Tidigare taggar" +msgstr "Senaste taggar" #: lib/publicgroupnav.php:88 msgid "Featured" msgstr "" #: lib/publicgroupnav.php:92 -#, fuzzy msgid "Popular" -msgstr "Personer" +msgstr "Populärt" #: lib/sandboxform.php:67 +#, fuzzy msgid "Sandbox" -msgstr "" +msgstr "Flytta till sandlåda" #: lib/sandboxform.php:78 #, fuzzy msgid "Sandbox this user" -msgstr "Ingen sådan användare" +msgstr "Flytta denna användare till sandlåda" #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "Sök" +msgstr "Sök webbplats" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "" +msgstr "Nyckelord" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "Sök" +msgstr "Sök hjälp" #: lib/searchgroupnav.php:80 msgid "People" @@ -5228,49 +5179,46 @@ msgstr "Personer" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "Sök personer på denna sida" +msgstr "Hitta personer på denna webbplats" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "Sök innehåll i inlägg" +msgstr "Hitta innehåll i notiser" #: lib/searchgroupnav.php:85 -#, fuzzy msgid "Find groups on this site" -msgstr "Sök personer på denna sida" +msgstr "Hitta grupper på denna webbplats" #: lib/section.php:89 msgid "Untitled section" -msgstr "" +msgstr "Namnlös sektion" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "Mer..." #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Nytt inlägg" +msgstr "Tysta ned" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Ingen sådan användare" +msgstr "Tysta ned denna användare" #: lib/subgroupnav.php:83 -#, fuzzy, php-format +#, php-format msgid "People %s subscribes to" -msgstr "Fjärrprenumerera" +msgstr "Personer %s prenumererar på" #: lib/subgroupnav.php:91 -#, fuzzy, php-format +#, php-format msgid "People subscribed to %s" -msgstr "Fjärrprenumerera" +msgstr "Personer som prenumererar på %s" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "" +msgstr "Grupper %s är en medlem i" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 @@ -5284,16 +5232,15 @@ msgstr "" #: lib/subscriptionlist.php:126 msgid "(none)" -msgstr "" +msgstr "(ingen)" #: lib/subs.php:52 msgid "Already subscribed!" -msgstr "" +msgstr "Redan prenumerant!" #: lib/subs.php:56 -#, fuzzy msgid "User has blocked you." -msgstr "Användaren har ingen profil." +msgstr "Användaren har blockerat dig." #: lib/subs.php:60 msgid "Could not subscribe." @@ -5301,85 +5248,77 @@ msgstr "Kunde inte prenumerera." #: lib/subs.php:79 msgid "Could not subscribe other to you." -msgstr "Kunde inte prenumerera på annat åt dig." +msgstr "Kunde inte göra andra till prenumeranter hos dig." #: lib/subs.php:128 -#, fuzzy msgid "Not subscribed!" -msgstr "Ingen prenumerant!" +msgstr "Inte prenumerant!" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Kunde inte radera prenumerationen. " +msgstr "Kunde inte ta bort själv-prenumeration." #: lib/subs.php:146 msgid "Couldn't delete subscription." -msgstr "Kunde inte radera prenumerationen. " +msgstr "Kunde inte ta bort prenumeration." #: lib/tagcloudsection.php:56 -#, fuzzy msgid "None" -msgstr "Nej" +msgstr "Ingen" #: lib/topposterssection.php:74 msgid "Top posters" -msgstr "" +msgstr "Toppostare" #: lib/unsandboxform.php:69 +#, fuzzy msgid "Unsandbox" -msgstr "" +msgstr "Flytta från sandlåda" #: lib/unsandboxform.php:80 #, fuzzy msgid "Unsandbox this user" -msgstr "Ingen sådan användare" +msgstr "Flytta denna användare från sandlåda" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "Häv nedtystning" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "Ingen sådan användare" +msgstr "Häv nedtystning av denna användare" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "" +msgstr "Avsluta prenumerationen på denna användare" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "Lämnar pren." +msgstr "Avsluta pren." #: lib/userprofile.php:116 -#, fuzzy msgid "Edit Avatar" -msgstr "Användarbild" +msgstr "Redigera avatar" #: lib/userprofile.php:236 -#, fuzzy msgid "User actions" -msgstr "Okänd funktion" +msgstr "Användaråtgärd" #: lib/userprofile.php:248 -#, fuzzy msgid "Edit profile settings" -msgstr "Profil inställningar" +msgstr "Redigera profilinställningar" #: lib/userprofile.php:249 msgid "Edit" -msgstr "" +msgstr "Redigera" #: lib/userprofile.php:272 -#, fuzzy msgid "Send a direct message to this user" -msgstr "Du kan inte skicka meddelande till den användaren." +msgstr "Skicka ett direktmeddelande till denna användare" #: lib/userprofile.php:273 -#, fuzzy msgid "Message" -msgstr "Nytt meddelande" +msgstr "Meddelande" #: lib/userprofile.php:311 msgid "Moderate" @@ -5430,27 +5369,27 @@ msgid "about a year ago" msgstr "för ett år sedan" #: lib/webcolor.php:82 -#, fuzzy, php-format +#, php-format msgid "%s is not a valid color!" -msgstr "Hemsidan har ingen giltig URL" +msgstr "%s är inte en giltig färg!" #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "" +msgstr "%s är inte en giltig färg! Använd 3 eller 6 hexadecimala tecken." #: scripts/maildaemon.php:48 msgid "Could not parse message." -msgstr "" +msgstr "Kunde inte tolka meddelande." #: scripts/maildaemon.php:53 msgid "Not a registered user." -msgstr "Inte registrerad användare." +msgstr "Inte en registrerad användare." #: scripts/maildaemon.php:57 msgid "Sorry, that is not your incoming email address." -msgstr "Ledsen, men det är inte din inkommande emailadress." +msgstr "Ledsen, det är inte din inkommande e-postadress." #: scripts/maildaemon.php:61 msgid "Sorry, no incoming email allowed." -msgstr "Ledsen, men inga inkommande email är tillåtna." +msgstr "Ledsen, ingen inkommande e-post tillåts." diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index b9461933d5..4e3b165acf 100644 --- a/locale/te/LC_MESSAGES/statusnet.po +++ b/locale/te/LC_MESSAGES/statusnet.po @@ -8,12 +8,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:11+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:26+0000\n" "Language-Team: Telugu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: te\n" "X-Message-Group: out-statusnet\n" @@ -571,7 +571,7 @@ msgstr "కత్తిరించు" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1744,11 +1744,11 @@ msgstr "ఓపెన్ఐడీ ఫారమును సృష్టించ msgid "%s left group %s" msgstr "%2$s గుంపు నుండి %1$s వైదొలిగారు" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "ఇప్పటికే లోనికి ప్రవేశించారు." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "సందేశపు విషయం సరైనది కాదు" @@ -4284,40 +4284,54 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "మారుపేర్లని సృష్టించలేకపోయాం." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "%sకి స్పందనలు" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "%sకి స్పందనలు" msgstr[1] "%sకి స్పందనలు" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "%sకి స్పందనలు" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "%sకి స్పందనలు" msgstr[1] "%sకి స్పందనలు" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!" msgstr[1] "మీరు ఇప్పటికే లోనికి ప్రవేశించారు!" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4336,6 +4350,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index e7ae86b4e7..3d9661e7db 100644 --- a/locale/tr/LC_MESSAGES/statusnet.po +++ b/locale/tr/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:14+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:29+0000\n" "Language-Team: Turkish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: tr\n" "X-Message-Group: out-statusnet\n" @@ -582,7 +582,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1803,11 +1803,11 @@ msgstr "OpenID formu yaratılamadı: %s" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Zaten giriş yapılmış." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Geçersiz durum mesajı" @@ -4387,37 +4387,51 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Avatar bilgisi kaydedilemedi" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Bize o profili yollamadınız" -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Uzaktan abonelik" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Uzaktan abonelik" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "Bize o profili yollamadınız" -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4436,6 +4450,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index 165e56bca3..0d8674bfd5 100644 --- a/locale/uk/LC_MESSAGES/statusnet.po +++ b/locale/uk/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:17+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:33+0000\n" "Language-Team: Ukrainian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: uk\n" "X-Message-Group: out-statusnet\n" @@ -190,9 +190,8 @@ msgid "Could not save profile." msgstr "Не вдалося зберегти профіль." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Не можна відписатись від самого себе!" +msgstr "Ви не можете блокувати самого себе!" #: actions/apiblockcreate.php:119 msgid "Block user failed." @@ -578,7 +577,7 @@ msgstr "Втяти" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1817,11 +1816,11 @@ msgstr "Не вдалося видалити користувача %s з гру msgid "%s left group %s" msgstr "%s залишив групу %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Тепер Ви увійшли." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "Недійсний або неправильний токен." @@ -4442,40 +4441,55 @@ msgstr "Сповіщення увімкнуто." msgid "Can't turn on notification." msgstr "Не можна увімкнути сповіщення." -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Неможна призначити додаткові імена." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 msgid "You are not subscribed to anyone." msgstr "Ви не маєте жодних підписок." -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ви підписані до цієї особи:" msgstr[1] "Ви підписані до цих людей:" msgstr[2] "Ви підписані до цих людей:" -#: lib/command.php:614 +#: lib/command.php:645 msgid "No one is subscribed to you." msgstr "До Вас ніхто не підписаний." -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Ця особа є підписаною до Вас:" msgstr[1] "Ці люди підписані до Вас:" msgstr[2] "Ці люди підписані до Вас:" -#: lib/command.php:636 +#: lib/command.php:667 msgid "You are not a member of any groups." msgstr "Ви не є учасником жодної групи." -#: lib/command.php:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 +#, fuzzy msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4494,6 +4508,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" @@ -5411,9 +5426,8 @@ msgid "Not subscribed!" msgstr "Не підписано!" #: lib/subs.php:133 -#, fuzzy msgid "Couldn't delete self-subscription." -msgstr "Не вдалося видалити підписку." +msgstr "Не можу видалити самопідписку." #: lib/subs.php:146 msgid "Couldn't delete subscription." diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index bf323467cb..8e29eac3c4 100644 --- a/locale/vi/LC_MESSAGES/statusnet.po +++ b/locale/vi/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:19+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:36+0000\n" "Language-Team: Vietnamese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: vi\n" "X-Message-Group: out-statusnet\n" @@ -589,7 +589,7 @@ msgstr "Nhóm" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1888,11 +1888,11 @@ msgstr "Không thể theo bạn này: %s đã có trong danh sách bạn bè c msgid "%s left group %s" msgstr "%s và nhóm" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "Đã đăng nhập." -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "Nội dung tin nhắn không hợp lệ" @@ -4555,37 +4555,51 @@ msgstr "Không có mã số xác nhận." msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "Không thể tạo favorite." + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "Bạn chưa cập nhật thông tin riêng" -#: lib/command.php:594 +#: lib/command.php:625 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:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "Không thể tạo favorite." -#: lib/command.php:616 +#: lib/command.php:647 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:636 +#: lib/command.php:667 #, 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:638 +#: lib/command.php:669 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:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4604,6 +4618,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index 041b4402e9..4e306a76bb 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:23+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:39+0000\n" "Language-Team: Simplified Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hans\n" "X-Message-Group: out-statusnet\n" @@ -583,7 +583,7 @@ msgstr "剪裁" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1840,11 +1840,11 @@ msgstr "无法订阅用户:未找到。" msgid "%s left group %s" msgstr "%s 离开群 %s" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "已登录。" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 #, fuzzy msgid "Invalid or expired token." msgstr "通告内容不正确" @@ -4460,37 +4460,51 @@ msgstr "通告开启。" msgid "Can't turn on notification." msgstr "无法开启通告。" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "无法创建收藏。" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "您未告知此个人信息" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "您已订阅这些用户:" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "无法订阅他人更新。" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "无法订阅他人更新。" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "您未告知此个人信息" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "您未告知此个人信息" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4509,6 +4523,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index 4325d5cde6..ad7d1fbaea 100644 --- a/locale/zh_TW/LC_MESSAGES/statusnet.po +++ b/locale/zh_TW/LC_MESSAGES/statusnet.po @@ -7,12 +7,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-05 19:53+0000\n" -"PO-Revision-Date: 2009-12-05 19:55:27+0000\n" +"POT-Creation-Date: 2009-12-07 21:25+0000\n" +"PO-Revision-Date: 2009-12-07 21:27:42+0000\n" "Language-Team: Traditional Chinese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.16alpha(r59747); Translate extension (2009-11-29)\n" +"X-Generator: MediaWiki 1.16alpha(r59800); Translate extension (2009-12-06)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hant\n" "X-Message-Group: out-statusnet\n" @@ -576,7 +576,7 @@ msgstr "" #: actions/emailsettings.php:238 actions/favor.php:75 #: actions/groupblock.php:66 actions/grouplogo.php:309 #: actions/groupunblock.php:66 actions/imsettings.php:206 -#: actions/invite.php:56 actions/login.php:129 actions/makeadmin.php:66 +#: actions/invite.php:56 actions/login.php:134 actions/makeadmin.php:66 #: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80 #: actions/othersettings.php:145 actions/passwordsettings.php:138 #: actions/profilesettings.php:187 actions/recoverpassword.php:337 @@ -1776,11 +1776,11 @@ msgstr "無法從 %s 建立OpenID" msgid "%s left group %s" msgstr "" -#: actions/login.php:79 actions/register.php:137 +#: actions/login.php:82 actions/register.php:137 msgid "Already logged in." msgstr "已登入" -#: actions/login.php:108 actions/login.php:118 +#: actions/login.php:113 actions/login.php:123 msgid "Invalid or expired token." msgstr "" @@ -4304,37 +4304,51 @@ msgstr "" msgid "Can't turn on notification." msgstr "" -#: lib/command.php:592 +#: lib/command.php:588 +msgid "Login command is disabled" +msgstr "" + +#: lib/command.php:602 +#, fuzzy, php-format +msgid "Could not create login token for %s" +msgstr "無法存取個人圖像資料" + +#: lib/command.php:607 +#, php-format +msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgstr "" + +#: lib/command.php:623 #, fuzzy msgid "You are not subscribed to anyone." msgstr "此帳號已註冊" -#: lib/command.php:594 +#: lib/command.php:625 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "此帳號已註冊" -#: lib/command.php:614 +#: lib/command.php:645 #, fuzzy msgid "No one is subscribed to you." msgstr "無此訂閱" -#: lib/command.php:616 +#: lib/command.php:647 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "無此訂閱" -#: lib/command.php:636 +#: lib/command.php:667 #, fuzzy msgid "You are not a member of any groups." msgstr "無法連結到伺服器:%s" -#: lib/command.php:638 +#: lib/command.php:669 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "無法連結到伺服器:%s" -#: lib/command.php:652 +#: lib/command.php:683 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -4353,6 +4367,7 @@ msgid "" "reply # - reply to notice with a given id\n" "reply - reply to the last notice from user\n" "join - join group\n" +"login - Get a link to login to the web interface\n" "drop - leave group\n" "stats - get your stats\n" "stop - same as 'off'\n" From 5affa498209b8c768531a816865903728e726e88 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 8 Dec 2009 08:28:44 -0800 Subject: [PATCH 54/70] Tweak updateavatarurl.php: emit a newline whether we're on verbose or non-quiet, emit help when no users specified. --- scripts/updateavatarurl.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/updateavatarurl.php b/scripts/updateavatarurl.php index dfcfc118cf..617c2e24c7 100644 --- a/scripts/updateavatarurl.php +++ b/scripts/updateavatarurl.php @@ -60,7 +60,8 @@ try { } } } else { - throw new Exception("You have to provide an ID or nickname or 'all'."); + show_help(); + exit(1); } } catch (Exception $e) { print $e->getMessage()."\n"; @@ -123,6 +124,9 @@ function updateAvatars($user) } if (have_option('v', 'verbose')) { - print "DONE.\n"; + print "DONE."; + } + if (!have_option('q', 'quiet') || have_option('v', 'verbose')) { + print "\n"; } } From 3536f01258dc43bee764c98fbdda5a6f1df7bcb2 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 8 Dec 2009 09:57:37 -0800 Subject: [PATCH 55/70] Make default & sample val for $config['queue']['queue_basename'] actually work! Now matches the recommendation in README which is in fact correct. Must include the /queue/ prefix (unless somthing else actually makes sense) --- config.php.sample | 2 +- lib/default.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config.php.sample b/config.php.sample index 473eb74e2c..91e6614c06 100644 --- a/config.php.sample +++ b/config.php.sample @@ -154,7 +154,7 @@ $config['sphinx']['port'] = 3312; // $config['queue']['subsystem'] = 'stomp'; // $config['queue']['stomp_server'] = 'tcp://localhost:61613'; // use different queue_basename for each statusnet instance managed by the server -// $config['queue']['queue_basename'] = 'statusnet'; +// $config['queue']['queue_basename'] = '/queue/statusnet/'; // The following customise the behaviour of the various daemons: // $config['daemon']['piddir'] = '/var/run'; diff --git a/lib/default.php b/lib/default.php index db90aeca3e..ebb6f8d016 100644 --- a/lib/default.php +++ b/lib/default.php @@ -75,7 +75,7 @@ $default = array('enabled' => false, 'subsystem' => 'db', # default to database, or 'stomp' 'stomp_server' => null, - 'queue_basename' => 'statusnet', + 'queue_basename' => '/queue/statusnet/', 'stomp_username' => null, 'stomp_password' => null, ), From add126bc6c6eb574e00f171c2107b0406b7015e5 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 14:56:11 -0500 Subject: [PATCH 56/70] add forward table --- db/statusnet.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/db/statusnet.sql b/db/statusnet.sql index 18abcdfdb2..b500b81f2d 100644 --- a/db/statusnet.sql +++ b/db/statusnet.sql @@ -585,3 +585,14 @@ create table login_token ( constraint primary key (user_id) ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; +create table forward ( + + profile_id integer not null comment 'profile who forwarded the notice' references profile (id), + notice_id integer not null comment 'notice they forwarded' references notice (id), + + created datetime not null comment 'date this record was created', + + constraint primary key (profile_id, notice_id) + +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + From 4b5e977a7b1c390555d880d3dc7f8b8c6744646c Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 8 Dec 2009 12:17:11 -0800 Subject: [PATCH 57/70] New _m() gettext wrapper with smart detection of plugin domains. Plugin base class registers your gettext files if present at initialization. update_pot.sh replaced with update_po_templates.php which can do core, plugins, or all (default). Top-level Makefile added to build .mo files for plugins as well as core. As described on list: http://lists.status.net/pipermail/statusnet-dev/2009-December/002869.html --- Makefile | 18 + lib/language.php | 125 +++++- lib/plugin.php | 19 + plugins/Facebook/FBConnectAuth.php | 62 +-- plugins/Facebook/FBConnectLogin.php | 6 +- plugins/Facebook/FBConnectSettings.php | 30 +- plugins/Facebook/FacebookPlugin.php | 10 +- plugins/Facebook/facebookaction.php | 34 +- plugins/Facebook/facebookhome.php | 20 +- plugins/Facebook/facebookinvite.php | 12 +- plugins/Facebook/facebooklogin.php | 2 +- plugins/Facebook/facebookremove.php | 2 +- plugins/Facebook/facebooksettings.php | 20 +- plugins/Facebook/facebookutil.php | 4 +- plugins/Facebook/locale/Facebook.po | 394 ++++++++++++++++++ plugins/FeedSub/FeedSubPlugin.php | 5 +- plugins/FeedSub/actions/feedsubsettings.php | 40 +- plugins/FeedSub/feedmunger.php | 2 +- plugins/FeedSub/locale/FeedSub.po | 104 +++++ .../FeedSub/locale/fr/LC_MESSAGES/FeedSub.po | 106 +++++ plugins/FeedSub/tests/gettext-speedtest.php | 78 ++++ plugins/Mapstraction/MapstractionPlugin.php | 4 +- plugins/Mapstraction/allmap.php | 4 +- plugins/Mapstraction/locale/Mapstraction.po | 48 +++ plugins/Mapstraction/map.php | 4 +- plugins/Mapstraction/usermap.php | 2 +- plugins/OpenID/OpenIDPlugin.php | 8 +- plugins/OpenID/finishaddopenid.php | 16 +- plugins/OpenID/finishopenidlogin.php | 62 +-- plugins/OpenID/locale/OpenID.po | 344 +++++++++++++++ plugins/OpenID/openid.php | 18 +- plugins/OpenID/openidlogin.php | 22 +- plugins/OpenID/openidserver.php | 4 +- plugins/OpenID/openidsettings.php | 30 +- plugins/OpenID/openidtrust.php | 10 +- plugins/Sample/SamplePlugin.php | 59 +++ plugins/TwitterBridge/TwitterBridgePlugin.php | 4 +- plugins/TwitterBridge/locale/TwitterBridge.po | 128 ++++++ plugins/TwitterBridge/twitter.php | 4 +- .../TwitterBridge/twitterauthorization.php | 10 +- plugins/TwitterBridge/twittersettings.php | 42 +- scripts/update_po_templates.php | 211 ++++++++++ scripts/update_pot.sh | 13 - 43 files changed, 1873 insertions(+), 267 deletions(-) create mode 100644 Makefile create mode 100644 plugins/Facebook/locale/Facebook.po create mode 100644 plugins/FeedSub/locale/FeedSub.po create mode 100644 plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po create mode 100644 plugins/FeedSub/tests/gettext-speedtest.php create mode 100644 plugins/Mapstraction/locale/Mapstraction.po create mode 100644 plugins/OpenID/locale/OpenID.po create mode 100644 plugins/Sample/SamplePlugin.php create mode 100644 plugins/TwitterBridge/locale/TwitterBridge.po create mode 100755 scripts/update_po_templates.php delete mode 100755 scripts/update_pot.sh diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..6f45c1b83e --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +# Warning: do not transform tabs to spaces in this file. + +all : translations + +core_mo = $(patsubst %.po,%.mo,$(wildcard locale/*/LC_MESSAGES/statusnet.po)) +plugin_mo = $(patsubst %.po,%.mo,$(wildcard plugins/*/locale/*/LC_MESSAGES/*.po)) + +translations : $(core_mo) $(plugin_mo) + +clean : + rm -f $(core_mo) $(plugin_mo) + +updatepo : + php scripts/update_po_templates.php --all + +%.mo : %.po + msgfmt -o $@ $< + diff --git a/lib/language.php b/lib/language.php index 4fc45bafe9..ab46f1a656 100644 --- a/lib/language.php +++ b/lib/language.php @@ -36,6 +36,33 @@ if (!function_exists('gettext')) { require_once("php-gettext/gettext.inc"); } + +if (!function_exists('dpgettext')) { + /** + * Context-aware dgettext wrapper; use when messages in different contexts + * won't be distinguished from the English source but need different translations. + * The context string will appear as msgctxt in the .po files. + * + * 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 $context context identifier, should be some key like "menu|file" + * @param string $msgid English source text + * @return string original or translated message + */ + function dpgettext($domain, $context, $msg) + { + $msgid = $context . "\004" . $msg; + $out = dcgettext($domain, $msgid, LC_MESSAGES); + if ($out == $msgid) { + return $msg; + } else { + return $out; + } + } +} + if (!function_exists('pgettext')) { /** * Context-aware gettext wrapper; use when messages in different contexts @@ -50,9 +77,31 @@ if (!function_exists('pgettext')) { * @return string original or translated message */ function pgettext($context, $msg) + { + return dpgettext(textdomain(NULL), $context, $msg); + } +} + +if (!function_exists('dnpgettext')) { + /** + * Context-aware dngettext wrapper; use when messages in different contexts + * won't be distinguished from the English source but need different translations. + * The context string will appear as msgctxt in the .po files. + * + * 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 $context context identifier, should be some key like "menu|file" + * @param string $msg singular English source text + * @param string $plural plural English source text + * @param int $n number of items to control plural selection + * @return string original or translated message + */ + function dnpgettext($domain, $context, $msg, $plural, $n) { $msgid = $context . "\004" . $msg; - $out = dcgettext(textdomain(NULL), $msgid, LC_MESSAGES); + $out = dcngettext($domain, $msgid, $plural, $n, LC_MESSAGES); if ($out == $msgid) { return $msg; } else { @@ -78,14 +127,78 @@ if (!function_exists('npgettext')) { */ function npgettext($context, $msg, $plural, $n) { - $msgid = $context . "\004" . $msg; - $out = dcngettext(textdomain(NULL), $msgid, $plural, $n, LC_MESSAGES); - if ($out == $msgid) { - return $msg; + return dnpgettext(textdomain(NULL), $msgid, $plural, $n, LC_MESSAGES); + } +} + +/** + * Shortcut for *gettext functions with smart domain detection. + * + * If calling from a plugin, this function checks which plugin was + * being called from and uses that as text domain, which will have + * been set up during plugin initialization. + * + * Also handles plurals and contexts depending on what parameters + * are passed to it: + * + * gettext -> _m($msg) + * ngettext -> _m($msg1, $msg2, $n) + * pgettext -> _m($ctx, $msg) + * npgettext -> _m($ctx, $msg1, $msg2, $n) + * + * @fixme may not work properly in eval'd code + * + * @param string $msg + * @return string + */ +function _m($msg/*, ...*/) +{ + $domain = _mdomain(debug_backtrace(false)); + $args = func_get_args(); + switch(count($args)) { + case 1: return dgettext($domain, $msg); + case 2: return dpgettext($domain, $args[0], $args[1]); + case 3: return dngettext($domain, $args[0], $args[1], $args[2]); + case 4: return dnpgettext($domain, $args[0], $args[1], $args[2], $args[3]); + default: throw new Exception("Bad parameter count to _m()"); + } +} + +/** + * Looks for which plugin we've been called from to set the gettext domain. + * + * @param array $backtrace debug_backtrace() output + * @return string + * @private + * @fixme could explode if SN is under a 'plugins' folder or share name. + */ +function _mdomain($backtrace) +{ + /* + 0 => + array + 'file' => string '/var/www/mublog/plugins/FeedSub/FeedSubPlugin.php' (length=49) + 'line' => int 77 + 'function' => string '_m' (length=2) + 'args' => + array + 0 => &string 'Feeds' (length=5) + */ + static $cached; + $path = $backtrace[0]['file']; + if (!isset($cached[$path])) { + if (DIRECTORY_SEPARATOR !== '/') { + $path = strtr($path, DIRECTORY_SEPARATOR, '/'); + } + $cut = strpos($path, '/plugins/') + 9; + $cut2 = strpos($path, '/', $cut); + if ($cut && $cut2) { + $cached[$path] = substr($path, $cut, $cut2 - $cut); } else { - return $out; + return null; } } + return $cached[$path]; } diff --git a/lib/plugin.php b/lib/plugin.php index 2c77c3e120..de7313e59e 100644 --- a/lib/plugin.php +++ b/lib/plugin.php @@ -65,6 +65,8 @@ class Plugin Event::addHandler(mb_substr($method, 2), array($this, $method)); } } + + $this->setupGettext(); } function initialize() @@ -77,6 +79,22 @@ class Plugin return true; } + /** + * Checks if this plugin has localization that needs to be set up. + * Gettext localizations can be called via the _m() helper function. + */ + protected function setupGettext() + { + $class = get_class($this); + if (substr($class, -6) == 'Plugin') { + $name = substr($class, 0, -6); + $path = INSTALLDIR . "/plugins/$name/locale"; + if (file_exists($path) && is_dir($path)) { + bindtextdomain($name, $path); + } + } + } + protected function log($level, $msg) { common_log($level, get_class($this) . ': '.$msg); @@ -87,3 +105,4 @@ class Plugin $this->log(LOG_DEBUG, $msg); } } + diff --git a/plugins/Facebook/FBConnectAuth.php b/plugins/Facebook/FBConnectAuth.php index b909a49771..51bfc38657 100644 --- a/plugins/Facebook/FBConnectAuth.php +++ b/plugins/Facebook/FBConnectAuth.php @@ -48,8 +48,8 @@ class FBConnectauthAction extends Action common_log(LOG_WARNING, 'Facebook Connect Plugin - ' . "Failed auth attempt, proxy = $proxy, ip = $ip."); - $this->clientError(_('You must be logged into Facebook to ' . - 'use Facebook Connect.')); + $this->clientError(_m('You must be logged into Facebook to ' . + 'use Facebook Connect.')); } return true; @@ -74,7 +74,7 @@ class FBConnectauthAction extends Action // We don't want these cookies getFacebook()->clear_cookie_state(); - $this->clientError(_('There is already a local user linked with this Facebook.')); + $this->clientError(_m('There is already a local user linked with this Facebook.')); } else { @@ -87,12 +87,12 @@ class FBConnectauthAction extends Action $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. Try again, please.')); + $this->showForm(_m('There was a problem with your session token. Try again, please.')); return; } if ($this->arg('create')) { if (!$this->boolean('license')) { - $this->showForm(_('You can\'t register if you don\'t agree to the license.'), + $this->showForm(_m('You can\'t register if you don\'t agree to the license.'), $this->trimmed('newname')); return; } @@ -102,7 +102,7 @@ class FBConnectauthAction extends Action } else { common_debug('Facebook Connect Plugin - ' . print_r($this->args, true)); - $this->showForm(_('Something weird happened.'), + $this->showForm(_m('Something weird happened.'), $this->trimmed('newname')); } } else { @@ -116,13 +116,13 @@ class FBConnectauthAction extends Action $this->element('div', array('class' => 'error'), $this->error); } else { $this->element('div', 'instructions', - sprintf(_('This is the first time you\'ve logged into %s so we must connect your Facebook 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'))); + sprintf(_m('This is the first time you\'ve logged into %s so we must connect your Facebook 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() { - return _('Facebook Account Setup'); + return _m('Facebook Account Setup'); } function showForm($error=null, $username=null) @@ -150,7 +150,7 @@ class FBConnectauthAction extends Action 'class' => 'form_settings', 'action' => common_local_url('FBConnectAuth'))); $this->elementStart('fieldset', array('id' => 'settings_facebook_connect_options')); - $this->element('legend', null, _('Connection options')); + $this->element('legend', null, _m('Connection options')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); $this->element('input', array('type' => 'checkbox', @@ -159,10 +159,10 @@ class FBConnectauthAction extends Action 'name' => 'license', 'value' => 'true')); $this->elementStart('label', array('class' => 'checkbox', 'for' => 'license')); - $this->text(_('My text and files are available under ')); + $this->text(_m('My text and files are available under ')); $this->element('a', array('href' => common_config('license', 'url')), common_config('license', 'title')); - $this->text(_(' except this private data: password, email address, IM address, phone number.')); + $this->text(_m(' except this private data: password, email address, IM address, phone number.')); $this->elementEnd('label'); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -170,33 +170,33 @@ class FBConnectauthAction extends Action $this->elementStart('fieldset'); $this->hidden('token', common_session_token()); $this->element('legend', null, - _('Create new account')); + _m('Create new account')); $this->element('p', null, - _('Create a new user with this nickname.')); + _m('Create a new user with this nickname.')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); - $this->input('newname', _('New nickname'), + $this->input('newname', _m('New nickname'), ($this->username) ? $this->username : '', - _('1-64 lowercase letters or numbers, no punctuation or spaces')); + _m('1-64 lowercase letters or numbers, no punctuation or spaces')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('create', _('Create')); + $this->submit('create', _m('Create')); $this->elementEnd('fieldset'); $this->elementStart('fieldset'); $this->element('legend', null, - _('Connect existing account')); + _m('Connect existing account')); $this->element('p', null, - _('If you already have an account, login with your username and password to connect it to your Facebook.')); + _m('If you already have an account, login with your username and password to connect it to your Facebook.')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); - $this->input('nickname', _('Existing nickname')); + $this->input('nickname', _m('Existing nickname')); $this->elementEnd('li'); $this->elementStart('li'); - $this->password('password', _('Password')); + $this->password('password', _m('Password')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('connect', _('Connect')); + $this->submit('connect', _m('Connect')); $this->elementEnd('fieldset'); $this->elementEnd('fieldset'); @@ -212,7 +212,7 @@ class FBConnectauthAction extends Action function createNewUser() { if (common_config('site', 'closed')) { - $this->clientError(_('Registration not allowed.')); + $this->clientError(_m('Registration not allowed.')); return; } @@ -221,14 +221,14 @@ class FBConnectauthAction extends Action if (common_config('site', 'inviteonly')) { $code = $_SESSION['invitecode']; if (empty($code)) { - $this->clientError(_('Registration not allowed.')); + $this->clientError(_m('Registration not allowed.')); return; } $invite = Invitation::staticGet($code); if (empty($invite)) { - $this->clientError(_('Not a valid invitation code.')); + $this->clientError(_m('Not a valid invitation code.')); return; } } @@ -238,17 +238,17 @@ class FBConnectauthAction extends Action if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { - $this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.')); + $this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.')); return; } if (!User::allowed_nickname($nickname)) { - $this->showForm(_('Nickname not allowed.')); + $this->showForm(_m('Nickname not allowed.')); return; } if (User::staticGet('nickname', $nickname)) { - $this->showForm(_('Nickname already in use. Try another one.')); + $this->showForm(_m('Nickname already in use. Try another one.')); return; } @@ -266,7 +266,7 @@ class FBConnectauthAction extends Action $result = $this->flinkUser($user->id, $this->fbuid); if (!$result) { - $this->serverError(_('Error connecting user to Facebook.')); + $this->serverError(_m('Error connecting user to Facebook.')); return; } @@ -286,7 +286,7 @@ class FBConnectauthAction extends Action $password = $this->trimmed('password'); if (!common_check_user($nickname, $password)) { - $this->showForm(_('Invalid username or password.')); + $this->showForm(_m('Invalid username or password.')); return; } @@ -300,7 +300,7 @@ class FBConnectauthAction extends Action $result = $this->flinkUser($user->id, $this->fbuid); if (!$result) { - $this->serverError(_('Error connecting user to Facebook.')); + $this->serverError(_m('Error connecting user to Facebook.')); return; } @@ -320,7 +320,7 @@ class FBConnectauthAction extends Action $result = $this->flinkUser($user->id, $this->fbuid); if (empty($result)) { - $this->serverError(_('Error connecting user to Facebook.')); + $this->serverError(_m('Error connecting user to Facebook.')); return; } diff --git a/plugins/Facebook/FBConnectLogin.php b/plugins/Facebook/FBConnectLogin.php index d2bb8054c9..20c409f3ea 100644 --- a/plugins/Facebook/FBConnectLogin.php +++ b/plugins/Facebook/FBConnectLogin.php @@ -30,7 +30,7 @@ class FBConnectLoginAction extends Action parent::handle($args); if (common_is_real_login()) { - $this->clientError(_('Already logged in.')); + $this->clientError(_m('Already logged in.')); } $this->showPage(); @@ -38,7 +38,7 @@ class FBConnectLoginAction extends Action function getInstructions() { - return _('Login with your Facebook Account'); + return _m('Login with your Facebook Account'); } function showPageNotice() @@ -52,7 +52,7 @@ class FBConnectLoginAction extends Action function title() { - return _('Facebook Login'); + return _m('Facebook Login'); } function showContent() { diff --git a/plugins/Facebook/FBConnectSettings.php b/plugins/Facebook/FBConnectSettings.php index 911c567873..590dffd8a9 100644 --- a/plugins/Facebook/FBConnectSettings.php +++ b/plugins/Facebook/FBConnectSettings.php @@ -53,7 +53,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction function title() { - return _('Facebook Connect Settings'); + return _m('Facebook Connect Settings'); } /** @@ -64,7 +64,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction function getInstructions() { - return _('Manage how your account connects to Facebook'); + return _m('Manage how your account connects to Facebook'); } /** @@ -89,7 +89,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction if (!$flink) { $this->element('p', 'instructions', - _('There is no Facebook user connected to this account.')); + _m('There is no Facebook user connected to this account.')); $this->element('fb:login-button', array('onlogin' => 'goto_login()', 'length' => 'long')); @@ -97,7 +97,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction } else { $this->element('p', 'form_note', - _('Connected Facebook user')); + _m('Connected Facebook user')); $this->elementStart('p', array('class' => 'facebook-user-display')); $this->elementStart('fb:profile-pic', @@ -116,18 +116,18 @@ class FBConnectSettingsAction extends ConnectSettingsAction $this->elementStart('fieldset'); - $this->element('legend', null, _('Disconnect my account from Facebook')); + $this->element('legend', null, _m('Disconnect my account from Facebook')); if (!$user->password) { $this->elementStart('p', array('class' => 'form_guide')); - $this->text(_('Disconnecting your Faceboook ' . - 'would make it impossible to log in! Please ')); + $this->text(_m('Disconnecting your Faceboook ' . + 'would make it impossible to log in! Please ')); $this->element('a', array('href' => common_local_url('passwordsettings')), - _('set a password')); + _m('set a password')); - $this->text(_(' first.')); + $this->text(_m(' first.')); $this->elementEnd('p'); } else { @@ -139,7 +139,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction $this->element('p', 'instructions', sprintf($note, $site, $site)); - $this->submit('disconnect', _('Disconnect')); + $this->submit('disconnect', _m('Disconnect')); } $this->elementEnd('fieldset'); @@ -161,8 +161,8 @@ class FBConnectSettingsAction extends ConnectSettingsAction // CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. '. - 'Try again, please.')); + $this->showForm(_m('There was a problem with your session token. '. + 'Try again, please.')); return; } @@ -175,7 +175,7 @@ class FBConnectSettingsAction extends ConnectSettingsAction if ($result === false) { common_log_db_error($user, 'DELETE', __FILE__); - $this->serverError(_('Couldn\'t delete link to Facebook.')); + $this->serverError(_m('Couldn\'t delete link to Facebook.')); return; } @@ -191,10 +191,10 @@ class FBConnectSettingsAction extends ConnectSettingsAction $e->getMessage()); } - $this->showForm(_('You have disconnected from Facebook.'), true); + $this->showForm(_m('You have disconnected from Facebook.'), true); } else { - $this->showForm(_('Not sure what you\'re trying to do.')); + $this->showForm(_m('Not sure what you\'re trying to do.')); return; } diff --git a/plugins/Facebook/FacebookPlugin.php b/plugins/Facebook/FacebookPlugin.php index 40c911cce3..39b2ef2876 100644 --- a/plugins/Facebook/FacebookPlugin.php +++ b/plugins/Facebook/FacebookPlugin.php @@ -406,9 +406,9 @@ class FacebookPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('FBConnectLogin'), - _('Facebook'), - _('Login or register using Facebook'), - 'FBConnectLogin' === $action_name); + _m('Facebook'), + _m('Login or register using Facebook'), + 'FBConnectLogin' === $action_name); return true; } @@ -426,8 +426,8 @@ class FacebookPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('FBConnectSettings'), - _('Facebook'), - _('Facebook Connect Settings'), + _m('Facebook'), + _m('Facebook Connect Settings'), $action_name === 'FBConnectSettings'); return true; diff --git a/plugins/Facebook/facebookaction.php b/plugins/Facebook/facebookaction.php index b090e9bd9a..705bb2780d 100644 --- a/plugins/Facebook/facebookaction.php +++ b/plugins/Facebook/facebookaction.php @@ -168,7 +168,7 @@ class FacebookAction extends Action $this->elementStart('li', array('class' => ($this->action == 'facebookhome') ? 'current' : 'facebook_home')); $this->element('a', - array('href' => 'index.php', 'title' => _('Home')), _('Home')); + array('href' => 'index.php', 'title' => _m('Home')), _m('Home')); $this->elementEnd('li'); if (common_config('invite', 'enabled')) { @@ -176,7 +176,7 @@ class FacebookAction extends Action array('class' => ($this->action == 'facebookinvite') ? 'current' : 'facebook_invite')); $this->element('a', - array('href' => 'invite.php', 'title' => _('Invite')), _('Invite')); + array('href' => 'invite.php', 'title' => _m('Invite')), _m('Invite')); $this->elementEnd('li'); } @@ -185,7 +185,7 @@ class FacebookAction extends Action ($this->action == 'facebooksettings') ? 'current' : 'facebook_settings')); $this->element('a', array('href' => 'settings.php', - 'title' => _('Settings')), _('Settings')); + 'title' => _m('Settings')), _m('Settings')); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -225,15 +225,15 @@ class FacebookAction extends Action $this->elementStart('dl', array('class' => 'system_notice')); $this->element('dt', null, 'Page Notice'); - $loginmsg_part1 = _('To use the %s Facebook Application you need to login ' . + $loginmsg_part1 = _m('To use the %s Facebook Application you need to login ' . 'with your username and password. Don\'t have a username yet? '); - $loginmsg_part2 = _(' a new account.'); + $loginmsg_part2 = _m(' a new account.'); $this->elementStart('dd'); $this->elementStart('p'); $this->text(sprintf($loginmsg_part1, common_config('site', 'name'))); $this->element('a', - array('href' => common_local_url('register')), _('Register')); + array('href' => common_local_url('register')), _m('Register')); $this->text($loginmsg_part2); $this->elementEnd('p'); $this->elementEnd('dd'); @@ -246,7 +246,7 @@ class FacebookAction extends Action { $this->elementStart('div', array('id' => 'content')); - $this->element('h1', null, _('Login')); + $this->element('h1', null, _m('Login')); if ($msg) { $this->element('fb:error', array('message' => $msg)); @@ -265,20 +265,20 @@ class FacebookAction extends Action $this->elementStart('ul', array('class' => 'form_datas')); $this->elementStart('li'); - $this->input('nickname', _('Nickname')); + $this->input('nickname', _m('Nickname')); $this->elementEnd('li'); $this->elementStart('li'); - $this->password('password', _('Password')); + $this->password('password', _m('Password')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('submit', _('Login')); + $this->submit('submit', _m('Login')); $this->elementEnd('fieldset'); $this->elementEnd('form'); $this->elementStart('p'); $this->element('a', array('href' => common_local_url('recoverpassword')), - _('Lost or forgotten password?')); + _m('Lost or forgotten password?')); $this->elementEnd('p'); $this->elementEnd('div'); @@ -383,7 +383,7 @@ class FacebookAction extends Action // Does a little before-after block for next/prev page if ($have_before || $have_after) { $this->elementStart('dl', 'pagination'); - $this->element('dt', null, _('Pagination')); + $this->element('dt', null, _m('Pagination')); $this->elementStart('dd', null); $this->elementStart('ul', array('class' => 'nav')); } @@ -392,7 +392,7 @@ class FacebookAction extends Action $newargs = $args ? array_merge($args, $pargs) : $pargs; $this->elementStart('li', array('class' => 'nav_prev')); $this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'prev'), - _('After')); + _m('After')); $this->elementEnd('li'); } if ($have_after) { @@ -400,7 +400,7 @@ class FacebookAction extends Action $newargs = $args ? array_merge($args, $pargs) : $pargs; $this->elementStart('li', array('class' => 'nav_next')); $this->element('a', array('href' => "$this->app_uri/$action?page=$newargs[page]", 'rel' => 'next'), - _('Before')); + _m('Before')); $this->elementEnd('li'); } if ($have_before || $have_after) { @@ -418,13 +418,13 @@ class FacebookAction extends Action $content = $this->trimmed('status_textarea'); if (!$content) { - $this->showPage(_('No notice content!')); + $this->showPage(_m('No notice content!')); return; } else { $content_shortened = common_shorten_links($content); if (Notice::contentTooLong($content_shortened)) { - $this->showPage(sprintf(_('That\'s too long. Max notice size is %d chars.'), + $this->showPage(sprintf(_m('That\'s too long. Max notice size is %d chars.'), Notice::maxContent())); return; } @@ -520,7 +520,7 @@ class FacebookNoticeList extends NoticeList function show() { $this->out->elementStart('div', array('id' =>'notices_primary')); - $this->out->element('h2', null, _('Notices')); + $this->out->element('h2', null, _m('Notices')); $this->out->elementStart('ul', array('class' => 'notices')); $cnt = 0; diff --git a/plugins/Facebook/facebookhome.php b/plugins/Facebook/facebookhome.php index ea141c2c2d..60782f63c9 100644 --- a/plugins/Facebook/facebookhome.php +++ b/plugins/Facebook/facebookhome.php @@ -108,7 +108,7 @@ class FacebookhomeAction extends FacebookAction $user = User::staticGet('nickname', $nickname); if (!$user) { - $this->showLoginForm(_("Server error - couldn't get user!")); + $this->showLoginForm(_m("Server error - couldn't get user!")); } $flink = DB_DataObject::factory('foreign_link'); @@ -128,7 +128,7 @@ class FacebookhomeAction extends FacebookAction return; } else { - $msg = _('Incorrect username or password.'); + $msg = _m('Incorrect username or password.'); } } @@ -155,9 +155,9 @@ class FacebookhomeAction extends FacebookAction function title() { if ($this->page > 1) { - return sprintf(_("%s and friends, page %d"), $this->user->nickname, $this->page); + return sprintf(_m("%s and friends, page %d"), $this->user->nickname, $this->page); } else { - return sprintf(_("%s and friends"), $this->user->nickname); + return sprintf(_m("%s and friends"), $this->user->nickname); } } @@ -186,7 +186,7 @@ class FacebookhomeAction extends FacebookAction $this->elementStart('div', array('class' => 'facebook_guide')); - $instructions = sprintf(_('If you would like the %s app to automatically update ' . + $instructions = sprintf(_m('If you would like the %s app to automatically update ' . 'your Facebook status with your latest notice, you need ' . 'to give it permission.'), $this->app_name); @@ -210,13 +210,13 @@ class FacebookhomeAction extends FacebookAction $this->elementStart('span', array('class' => 'facebook-button')); $this->element('a', array('href' => $auth_url), - sprintf(_('Okay, do it!'), $this->app_name)); + sprintf(_m('Okay, do it!'), $this->app_name)); $this->elementEnd('span'); $this->elementEnd('li'); $this->elementStart('li', array('id' => 'fb-permissions-item')); - $this->submit('skip', _('Skip')); + $this->submit('skip', _m('Skip')); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -245,7 +245,7 @@ class FacebookhomeAction extends FacebookAction if ($have_before || $have_after) { $this->elementStart('dl', 'pagination'); - $this->element('dt', null, _('Pagination')); + $this->element('dt', null, _m('Pagination')); $this->elementStart('dd', null); $this->elementStart('ul', array('class' => 'nav')); } @@ -254,7 +254,7 @@ class FacebookhomeAction extends FacebookAction $newargs = $args ? array_merge($args, $pargs) : $pargs; $this->elementStart('li', array('class' => 'nav_prev')); $this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'prev'), - _('After')); + _m('After')); $this->elementEnd('li'); } if ($have_after) { @@ -262,7 +262,7 @@ class FacebookhomeAction extends FacebookAction $newargs = $args ? array_merge($args, $pargs) : $pargs; $this->elementStart('li', array('class' => 'nav_next')); $this->element('a', array('href' => "$action?page=$newargs[page]", 'rel' => 'next'), - _('Before')); + _m('Before')); $this->elementEnd('li'); } if ($have_before || $have_after) { diff --git a/plugins/Facebook/facebookinvite.php b/plugins/Facebook/facebookinvite.php index 3380b4c857..e02c7bf3ed 100644 --- a/plugins/Facebook/facebookinvite.php +++ b/plugins/Facebook/facebookinvite.php @@ -69,9 +69,9 @@ class FacebookinviteAction extends FacebookAction function showSuccessContent() { - $this->element('h2', null, sprintf(_('Thanks for inviting your friends to use %s'), + $this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s'), common_config('site', 'name'))); - $this->element('p', null, _('Invitations have been sent to the following users:')); + $this->element('p', null, _m('Invitations have been sent to the following users:')); $friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list? @@ -91,7 +91,7 @@ class FacebookinviteAction extends FacebookAction function showFormContent() { - $content = sprintf(_('You have been invited to %s'), common_config('site', 'name')) . + $content = sprintf(_m('You have been invited to %s'), common_config('site', 'name')) . htmlentities(''); $this->elementStart('fb:request-form', array('action' => 'invite.php', @@ -100,7 +100,7 @@ class FacebookinviteAction extends FacebookAction 'type' => common_config('site', 'name'), 'content' => $content)); $this->hidden('invite', 'true'); - $actiontext = sprintf(_('Invite your friends to use %s'), common_config('site', 'name')); + $actiontext = sprintf(_m('Invite your friends to use %s'), common_config('site', 'name')); $multi_params = array('showborder' => 'false'); $multi_params['actiontext'] = $actiontext; @@ -122,7 +122,7 @@ class FacebookinviteAction extends FacebookAction if ($exclude_ids) { - $this->element('h2', null, sprintf(_('Friends already using %s:'), + $this->element('h2', null, sprintf(_m('Friends already using %s:'), common_config('site', 'name'))); $this->elementStart('ul', array('id' => 'facebook-friends')); @@ -140,7 +140,7 @@ class FacebookinviteAction extends FacebookAction function title() { - return sprintf(_('Send invitations')); + return sprintf(_m('Send invitations')); } } diff --git a/plugins/Facebook/facebooklogin.php b/plugins/Facebook/facebooklogin.php index f77aecca36..7a173ddaeb 100644 --- a/plugins/Facebook/facebooklogin.php +++ b/plugins/Facebook/facebooklogin.php @@ -88,7 +88,7 @@ class FacebookinviteAction extends FacebookAction function title() { - return sprintf(_('Login')); + return sprintf(_m('Login')); } function redirectHome() diff --git a/plugins/Facebook/facebookremove.php b/plugins/Facebook/facebookremove.php index 8531a8e6ea..09cb333428 100644 --- a/plugins/Facebook/facebookremove.php +++ b/plugins/Facebook/facebookremove.php @@ -55,7 +55,7 @@ class FacebookremoveAction extends FacebookAction if (!$result) { common_log_db_error($flink, 'DELETE', __FILE__); - $this->serverError(_('Couldn\'t remove Facebook user.')); + $this->serverError(_m('Couldn\'t remove Facebook user.')); return; } diff --git a/plugins/Facebook/facebooksettings.php b/plugins/Facebook/facebooksettings.php index d1269f1013..766d0e1996 100644 --- a/plugins/Facebook/facebooksettings.php +++ b/plugins/Facebook/facebooksettings.php @@ -71,9 +71,9 @@ class FacebooksettingsAction extends FacebookAction $trimmed); if ($result === false) { - $this->showForm(_('There was a problem saving your sync preferences!')); + $this->showForm(_m('There was a problem saving your sync preferences!')); } else { - $this->showForm(_('Sync preferences saved.'), true); + $this->showForm(_m('Sync preferences saved.'), true); } } @@ -96,14 +96,14 @@ class FacebooksettingsAction extends FacebookAction $this->elementStart('li'); - $this->checkbox('noticesync', _('Automatically update my Facebook status with my notices.'), + $this->checkbox('noticesync', _m('Automatically update my Facebook status with my notices.'), ($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND) : true); $this->elementEnd('li'); $this->elementStart('li'); - $this->checkbox('replysync', _('Send "@" replies to Facebook.'), + $this->checkbox('replysync', _m('Send "@" replies to Facebook.'), ($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true); $this->elementEnd('li'); @@ -112,15 +112,15 @@ class FacebooksettingsAction extends FacebookAction $prefix = trim($this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX)); - $this->input('prefix', _('Prefix'), + $this->input('prefix', _m('Prefix'), ($prefix) ? $prefix : null, - _('A string to prefix notices with.')); + _m('A string to prefix notices with.')); $this->elementEnd('li'); $this->elementStart('li'); - $this->submit('save', _('Save')); + $this->submit('save', _m('Save')); $this->elementEnd('li'); @@ -130,7 +130,7 @@ class FacebooksettingsAction extends FacebookAction } else { - $instructions = sprintf(_('If you would like %s to automatically update ' . + $instructions = sprintf(_m('If you would like %s to automatically update ' . 'your Facebook status with your latest notice, you need ' . 'to give it permission.'), $this->app_name); @@ -143,7 +143,7 @@ class FacebooksettingsAction extends FacebookAction $this->elementStart('fb:prompt-permission', array('perms' => 'publish_stream', 'next_fbjs' => 'document.setLocation(\'' . "$this->app_uri/settings.php" . '\')')); $this->element('span', array('class' => 'facebook-button'), - sprintf(_('Allow %s to update my Facebook status'), common_config('site', 'name'))); + sprintf(_m('Allow %s to update my Facebook status'), common_config('site', 'name'))); $this->elementEnd('fb:prompt-permission'); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -153,7 +153,7 @@ class FacebooksettingsAction extends FacebookAction function title() { - return _('Sync preferences'); + return _m('Sync preferences'); } } diff --git a/plugins/Facebook/facebookutil.php b/plugins/Facebook/facebookutil.php index 2abcbb14e2..2ec6db6b8d 100644 --- a/plugins/Facebook/facebookutil.php +++ b/plugins/Facebook/facebookutil.php @@ -277,10 +277,10 @@ function mail_facebook_app_removed($user) $site_name = common_config('site', 'name'); $subject = sprintf( - _('Your %1$s Facebook application access has been disabled.', + _m('Your %1$s Facebook application access has been disabled.', $site_name)); - $body = sprintf(_("Hi, %1\$s. We're sorry to inform you that we are " . + $body = sprintf(_m("Hi, %1\$s. We're sorry to inform you that we are " . 'unable to update your Facebook status from %2$s, and have disabled ' . 'the Facebook application for your account. This may be because ' . 'you have removed the Facebook application\'s authorization, or ' . diff --git a/plugins/Facebook/locale/Facebook.po b/plugins/Facebook/locale/Facebook.po new file mode 100644 index 0000000000..5b313c8c53 --- /dev/null +++ b/plugins/Facebook/locale/Facebook.po @@ -0,0 +1,394 @@ +# 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: 2009-12-07 20:38-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" + +#: 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:386 facebookhome.php:248 +msgid "Pagination" +msgstr "" + +#: facebookaction.php:395 facebookhome.php:257 +msgid "After" +msgstr "" + +#: facebookaction.php:403 facebookhome.php:265 +msgid "Before" +msgstr "" + +#: facebookaction.php:421 +msgid "No notice content!" +msgstr "" + +#: facebookaction.php:427 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "" + +#: facebookaction.php:523 +msgid "Notices" +msgstr "" + +#: facebookutil.php:280 +#, php-format +msgid "Your %1$s Facebook application access has been disabled." +msgstr "" + +#: facebookutil.php:283 +#, php-format +msgid "" +"Hi, %1$s. We're sorry to inform you that we are unable to update your " +"Facebook status from %2$s, and have disabled the Facebook application for " +"your account. This may be because you have removed the Facebook " +"application's authorization, or have deleted your Facebook account. You can " +"re-enable the Facebook application and automatic status updating by re-" +"installing the %2$s Facebook application.\n" +"\n" +"Regards,\n" +"\n" +"%2$s" +msgstr "" + +#: FBConnectLogin.php:33 +msgid "Already logged in." +msgstr "" + +#: FBConnectLogin.php:41 +msgid "Login with your Facebook Account" +msgstr "" + +#: FBConnectLogin.php:55 +msgid "Facebook 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 "" + +#: 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 "" + +#: 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 "" + +#: facebookremove.php:58 +msgid "Couldn't remove Facebook user." +msgstr "" + +#: FBConnectSettings.php:56 FacebookPlugin.php:430 +msgid "Facebook Connect Settings" +msgstr "" + +#: FBConnectSettings.php:67 +msgid "Manage how your account connects to Facebook" +msgstr "" + +#: FBConnectSettings.php:92 +msgid "There is no Facebook user connected to this account." +msgstr "" + +#: FBConnectSettings.php:100 +msgid "Connected Facebook user" +msgstr "" + +#: FBConnectSettings.php:119 +msgid "Disconnect my account from Facebook" +msgstr "" + +#: FBConnectSettings.php:124 +msgid "" +"Disconnecting your Faceboook would make it impossible to log in! Please " +msgstr "" + +#: FBConnectSettings.php:128 +msgid "set a password" +msgstr "" + +#: FBConnectSettings.php:130 +msgid " first." +msgstr "" + +#: FBConnectSettings.php:142 +msgid "Disconnect" +msgstr "" + +#: FBConnectSettings.php:164 FBConnectAuth.php:90 +msgid "There was a problem with your session token. Try again, please." +msgstr "" + +#: FBConnectSettings.php:178 +msgid "Couldn't delete link to Facebook." +msgstr "" + +#: FBConnectSettings.php:194 +msgid "You have disconnected from Facebook." +msgstr "" + +#: FBConnectSettings.php:197 +msgid "Not sure what you're trying to do." +msgstr "" + +#: FBConnectAuth.php:51 +msgid "You must be logged into Facebook to use Facebook Connect." +msgstr "" + +#: FBConnectAuth.php:77 +msgid "There is already a local user linked with this Facebook." +msgstr "" + +#: FBConnectAuth.php:95 +msgid "You can't register if you don't agree to the license." +msgstr "" + +#: FBConnectAuth.php:105 +msgid "Something weird happened." +msgstr "" + +#: FBConnectAuth.php:119 +#, php-format +msgid "" +"This is the first time you've logged into %s so we must connect your " +"Facebook to a local account. You can either create a new account, or connect " +"with your existing account, if you have one." +msgstr "" + +#: FBConnectAuth.php:125 +msgid "Facebook Account Setup" +msgstr "" + +#: FBConnectAuth.php:153 +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 +msgid "Create new account" +msgstr "" + +#: FBConnectAuth.php:175 +msgid "Create a new user with this nickname." +msgstr "" + +#: FBConnectAuth.php:178 +msgid "New nickname" +msgstr "" + +#: FBConnectAuth.php:180 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces" +msgstr "" + +#: FBConnectAuth.php:183 +msgid "Create" +msgstr "" + +#: FBConnectAuth.php:188 +msgid "Connect existing account" +msgstr "" + +#: FBConnectAuth.php:190 +msgid "" +"If you already have an account, login with your username and password to " +"connect it to your Facebook." +msgstr "" + +#: FBConnectAuth.php:193 +msgid "Existing nickname" +msgstr "" + +#: FBConnectAuth.php:199 +msgid "Connect" +msgstr "" + +#: FBConnectAuth.php:215 FBConnectAuth.php:224 +msgid "Registration not allowed." +msgstr "" + +#: FBConnectAuth.php:231 +msgid "Not a valid invitation code." +msgstr "" + +#: FBConnectAuth.php:241 +msgid "Nickname must have only lowercase letters and numbers and no spaces." +msgstr "" + +#: FBConnectAuth.php:246 +msgid "Nickname not allowed." +msgstr "" + +#: FBConnectAuth.php:251 +msgid "Nickname already in use. Try another one." +msgstr "" + +#: FBConnectAuth.php:269 FBConnectAuth.php:303 FBConnectAuth.php:323 +msgid "Error connecting user to Facebook." +msgstr "" + +#: FBConnectAuth.php:289 +msgid "Invalid username or password." +msgstr "" + +#: FacebookPlugin.php:409 FacebookPlugin.php:429 +msgid "Facebook" +msgstr "" + +#: FacebookPlugin.php:410 +msgid "Login or register using Facebook" +msgstr "" diff --git a/plugins/FeedSub/FeedSubPlugin.php b/plugins/FeedSub/FeedSubPlugin.php index 36d4e78023..857a9794d5 100644 --- a/plugins/FeedSub/FeedSubPlugin.php +++ b/plugins/FeedSub/FeedSubPlugin.php @@ -51,7 +51,6 @@ class FeedSubPlugin extends Plugin * @param Net_URL_Mapper $m path-to-action mapper * @return boolean hook return */ - function onRouterInitialized($m) { $m->connect('feedsub/callback/:feed', @@ -74,8 +73,8 @@ class FeedSubPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('feedsubsettings'), - dgettext('FeebSubPlugin', 'Feeds'), - dgettext('FeedSubPlugin', 'Feed subscription options'), + _m('Feeds'), + _m('Feed subscription options'), $action_name === 'feedsubsettings'); return true; diff --git a/plugins/FeedSub/actions/feedsubsettings.php b/plugins/FeedSub/actions/feedsubsettings.php index 242224fac0..0fba20a393 100644 --- a/plugins/FeedSub/actions/feedsubsettings.php +++ b/plugins/FeedSub/actions/feedsubsettings.php @@ -38,7 +38,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction function title() { - return dgettext('FeedSubPlugin', 'Feed subscriptions'); + return _m('Feed subscriptions'); } /** @@ -49,9 +49,8 @@ class FeedSubSettingsAction extends ConnectSettingsAction function getInstructions() { - return dgettext('FeedSubPlugin', - 'You can subscribe to feeds from other sites; ' . - 'updates will appear in your personal timeline.'); + return _m('You can subscribe to feeds from other sites; ' . + 'updates will appear in your personal timeline.'); } /** @@ -94,9 +93,9 @@ class FeedSubSettingsAction extends ConnectSettingsAction $this->elementEnd('ul'); if ($this->preview) { - $this->submit('subscribe', dgettext('FeedSubPlugin', 'Subscribe')); + $this->submit('subscribe', _m('Subscribe')); } else { - $this->submit('validate', dgettext('FeedSubPlugin', 'Continue')); + $this->submit('validate', _m('Continue')); } $this->elementEnd('fieldset'); @@ -149,8 +148,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction $feedurl = trim($this->arg('feedurl')); if ($feedurl == '') { - $this->showForm(dgettext('FeedSubPlugin', - 'Empty feed URL!')); + $this->showForm(_m('Empty feed URL!')); return; } $this->feedurl = $feedurl; @@ -160,26 +158,26 @@ class FeedSubSettingsAction extends ConnectSettingsAction $discover = new FeedDiscovery(); $uri = $discover->discoverFromURL($feedurl); } catch (FeedSubBadURLException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Invalid URL or could not reach server.')); + $this->showForm(_m('Invalid URL or could not reach server.')); return false; } catch (FeedSubBadResponseException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Cannot read feed; server returned error.')); + $this->showForm(_m('Cannot read feed; server returned error.')); return false; } catch (FeedSubEmptyException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Cannot read feed; server returned an empty page.')); + $this->showForm(_m('Cannot read feed; server returned an empty page.')); return false; } catch (FeedSubBadHTMLException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Bad HTML, could not find feed link.')); + $this->showForm(_m('Bad HTML, could not find feed link.')); return false; } catch (FeedSubNoFeedException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Could not find a feed linked from this URL.')); + $this->showForm(_m('Could not find a feed linked from this URL.')); return false; } catch (FeedSubUnrecognizedTypeException $e) { - $this->showForm(dgettext('FeedSubPlugin', 'Not a recognized feed type.')); + $this->showForm(_m('Not a recognized feed type.')); return false; } catch (FeedSubException $e) { // Any new ones we forgot about - $this->showForm(dgettext('FeedSubPlugin', 'Bad feed URL.')); + $this->showForm(_m('Bad feed URL.')); return false; } @@ -187,7 +185,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction $this->feedinfo = $this->munger->feedInfo(); if ($this->feedinfo->huburi == '') { - $this->showForm(dgettext('FeedSubPlugin', 'Feed is not PuSH-enabled; cannot subscribe.')); + $this->showForm(_m('Feed is not PuSH-enabled; cannot subscribe.')); return false; } @@ -207,7 +205,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction $ok = $this->feedinfo->subscribe(); common_log(LOG_INFO, __METHOD__ . ": sub was $ok"); if (!$ok) { - $this->showForm(dgettext('FeedSubPlugin', 'Feed subscription failed! Bad response from hub.')); + $this->showForm(_m('Feed subscription failed! Bad response from hub.')); return; } } @@ -217,11 +215,11 @@ class FeedSubSettingsAction extends ConnectSettingsAction $profile = $this->feedinfo->getProfile(); if ($user->isSubscribed($profile)) { - $this->showForm(dgettext('FeedSubPlugin', 'Already subscribed!')); + $this->showForm(_m('Already subscribed!')); } elseif ($user->subscribeTo($profile)) { - $this->showForm(dgettext('FeedSubPlugin', 'Feed subscribed!')); + $this->showForm(_m('Feed subscribed!')); } else { - $this->showForm(dgettext('FeedSubPlugin', 'Feed subscription failed!')); + $this->showForm(_m('Feed subscription failed!')); } } } @@ -230,7 +228,7 @@ class FeedSubSettingsAction extends ConnectSettingsAction { if ($this->validateFeed()) { $this->preview = true; - $this->showForm(dgettext('FeedSubPlugin', 'Previewing feed:')); + $this->showForm(_m('Previewing feed:')); } } diff --git a/plugins/FeedSub/feedmunger.php b/plugins/FeedSub/feedmunger.php index bb8075da95..f3618b8eb0 100644 --- a/plugins/FeedSub/feedmunger.php +++ b/plugins/FeedSub/feedmunger.php @@ -212,7 +212,7 @@ class FeedMunger // try adding #hashtags from the categories/tags on a post. // @todo Should we force a language here? - $format = dgettext("FeedSubPlugin", 'New post: "%1$s" %2$s'); + $format = _m('New post: "%1$s" %2$s'); $title = $entry->title; $link = $this->getAltLink($entry); $out = sprintf($format, $title, $link); diff --git a/plugins/FeedSub/locale/FeedSub.po b/plugins/FeedSub/locale/FeedSub.po new file mode 100644 index 0000000000..dedc018e3f --- /dev/null +++ b/plugins/FeedSub/locale/FeedSub.po @@ -0,0 +1,104 @@ +# 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: 2009-12-07 20:38-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" + +#: tests/gettext-speedtest.php:57 FeedSubPlugin.php:76 +msgid "Feeds" +msgstr "" + +#: FeedSubPlugin.php:77 +msgid "Feed subscription options" +msgstr "" + +#: feedmunger.php:215 +#, php-format +msgid "New post: \"%1$s\" %2$s" +msgstr "" + +#: actions/feedsubsettings.php:41 +msgid "Feed subscriptions" +msgstr "" + +#: actions/feedsubsettings.php:52 +msgid "" +"You can subscribe to feeds from other sites; updates will appear in your " +"personal timeline." +msgstr "" + +#: actions/feedsubsettings.php:96 +msgid "Subscribe" +msgstr "" + +#: actions/feedsubsettings.php:98 +msgid "Continue" +msgstr "" + +#: 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 "" diff --git a/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po b/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po new file mode 100644 index 0000000000..f17dfa50a5 --- /dev/null +++ b/plugins/FeedSub/locale/fr/LC_MESSAGES/FeedSub.po @@ -0,0 +1,106 @@ +# 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: 2009-12-07 14:14-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=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 "" diff --git a/plugins/FeedSub/tests/gettext-speedtest.php b/plugins/FeedSub/tests/gettext-speedtest.php new file mode 100644 index 0000000000..8bbdf5e899 --- /dev/null +++ b/plugins/FeedSub/tests/gettext-speedtest.php @@ -0,0 +1,78 @@ + $bits) { + list($time, $result) = $bits; + $ms = $time * 1000.0; + printf("%10s %2.4fms %s\n", $func, $ms, $result); +} + + +function fake($str) { + return $str; +} + diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index f20e81b0ea..93679e56c2 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -177,7 +177,7 @@ class MapstractionPlugin extends Plugin $action->elementStart('div', array('id' => 'entity_map', 'class' => 'section')); - $action->element('h2', null, _('Map')); + $action->element('h2', null, _m('Map')); $action->element('div', array('id' => 'map_canvas', 'class' => 'gray smallmap', @@ -188,7 +188,7 @@ class MapstractionPlugin extends Plugin array('nickname' => $action->trimmed('nickname'))); $action->element('a', array('href' => $mapUrl), - _("Full size")); + _m("Full size")); $action->elementEnd('div'); } diff --git a/plugins/Mapstraction/allmap.php b/plugins/Mapstraction/allmap.php index 0c4f03b31c..e73aa76e8e 100644 --- a/plugins/Mapstraction/allmap.php +++ b/plugins/Mapstraction/allmap.php @@ -68,10 +68,10 @@ class AllmapAction extends MapAction } if ($this->page == 1) { - return sprintf(_("%s friends map"), + return sprintf(_m("%s friends map"), $base); } else { - return sprintf(_("%s friends map, page %d"), + return sprintf(_m("%s friends map, page %d"), $base, $this->page); } diff --git a/plugins/Mapstraction/locale/Mapstraction.po b/plugins/Mapstraction/locale/Mapstraction.po new file mode 100644 index 0000000000..c1c50bf506 --- /dev/null +++ b/plugins/Mapstraction/locale/Mapstraction.po @@ -0,0 +1,48 @@ +# 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: 2009-12-07 20:38-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" + +#: 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 "" + +#: usermap.php:71 +#, php-format +msgid "%s map, page %d" +msgstr "" + +#: MapstractionPlugin.php:180 +msgid "Map" +msgstr "" + +#: MapstractionPlugin.php:191 +msgid "Full size" +msgstr "" diff --git a/plugins/Mapstraction/map.php b/plugins/Mapstraction/map.php index 734e480884..a33dfc7360 100644 --- a/plugins/Mapstraction/map.php +++ b/plugins/Mapstraction/map.php @@ -69,14 +69,14 @@ class MapAction extends OwnerDesignAction $this->user = User::staticGet('nickname', $nickname); if (!$this->user) { - $this->clientError(_('No such user.'), 404); + $this->clientError(_m('No such user.'), 404); return false; } $this->profile = $this->user->getProfile(); if (!$this->profile) { - $this->serverError(_('User has no profile.')); + $this->serverError(_m('User has no profile.')); return false; } diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php index 3e517ee864..ff47b6adaf 100644 --- a/plugins/Mapstraction/usermap.php +++ b/plugins/Mapstraction/usermap.php @@ -68,7 +68,7 @@ class UsermapAction extends MapAction if ($this->page == 1) { return $base; } else { - return sprintf(_("%s map, page %d"), + return sprintf(_m("%s map, page %d"), $base, $this->page); } diff --git a/plugins/OpenID/OpenIDPlugin.php b/plugins/OpenID/OpenIDPlugin.php index e86725d70d..a37d5465e8 100644 --- a/plugins/OpenID/OpenIDPlugin.php +++ b/plugins/OpenID/OpenIDPlugin.php @@ -120,8 +120,8 @@ class OpenIDPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('openidlogin'), - _('OpenID'), - _('Login or register with OpenID'), + _m('OpenID'), + _m('Login or register with OpenID'), $action_name === 'openidlogin'); return true; @@ -132,8 +132,8 @@ class OpenIDPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('openidsettings'), - _('OpenID'), - _('Add or remove OpenIDs'), + _m('OpenID'), + _m('Add or remove OpenIDs'), $action_name === 'openidsettings'); return true; diff --git a/plugins/OpenID/finishaddopenid.php b/plugins/OpenID/finishaddopenid.php index 7cd9165231..991e6584ee 100644 --- a/plugins/OpenID/finishaddopenid.php +++ b/plugins/OpenID/finishaddopenid.php @@ -64,7 +64,7 @@ class FinishaddopenidAction extends Action { parent::handle($args); if (!common_logged_in()) { - $this->clientError(_('Not logged in.')); + $this->clientError(_m('Not logged in.')); } else { $this->tryLogin(); } @@ -85,11 +85,11 @@ class FinishaddopenidAction extends Action $response = $consumer->complete(common_local_url('finishaddopenid')); if ($response->status == Auth_OpenID_CANCEL) { - $this->message(_('OpenID authentication cancelled.')); + $this->message(_m('OpenID authentication cancelled.')); return; } else if ($response->status == Auth_OpenID_FAILURE) { // Authentication failed; display the error message. - $this->message(sprintf(_('OpenID authentication failed: %s'), + $this->message(sprintf(_m('OpenID authentication failed: %s'), $response->message)); } else if ($response->status == Auth_OpenID_SUCCESS) { @@ -109,9 +109,9 @@ class FinishaddopenidAction extends Action if ($other) { if ($other->id == $cur->id) { - $this->message(_('You already have this OpenID!')); + $this->message(_m('You already have this OpenID!')); } else { - $this->message(_('Someone else already has this OpenID.')); + $this->message(_m('Someone else already has this OpenID.')); } return; } @@ -123,12 +123,12 @@ class FinishaddopenidAction extends Action $result = oid_link_user($cur->id, $canonical, $display); if (!$result) { - $this->message(_('Error connecting user.')); + $this->message(_m('Error connecting user.')); return; } if ($sreg) { if (!oid_update_user($cur, $sreg)) { - $this->message(_('Error updating profile')); + $this->message(_m('Error updating profile')); return; } } @@ -167,7 +167,7 @@ class FinishaddopenidAction extends Action function title() { - return _('OpenID Login'); + return _m('OpenID Login'); } /** diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index e5551b4126..987fa92138 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -31,16 +31,16 @@ class FinishopenidloginAction extends Action { parent::handle($args); if (common_is_real_login()) { - $this->clientError(_('Already logged in.')); + $this->clientError(_m('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. Try again, please.')); + $this->showForm(_m('There was a problem with your session token. Try again, please.')); return; } if ($this->arg('create')) { if (!$this->boolean('license')) { - $this->showForm(_('You can\'t register if you don\'t agree to the license.'), + $this->showForm(_m('You can\'t register if you don\'t agree to the license.'), $this->trimmed('newname')); return; } @@ -49,7 +49,7 @@ class FinishopenidloginAction extends Action $this->connectUser(); } else { common_debug(print_r($this->args, true), __FILE__); - $this->showForm(_('Something weird happened.'), + $this->showForm(_m('Something weird happened.'), $this->trimmed('newname')); } } else { @@ -63,13 +63,13 @@ class FinishopenidloginAction extends Action $this->element('div', array('class' => 'error'), $this->error); } else { $this->element('div', 'instructions', - sprintf(_('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'))); + 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() { - return _('OpenID Account Setup'); + return _m('OpenID Account Setup'); } function showForm($error=null, $username=null) @@ -94,14 +94,14 @@ class FinishopenidloginAction extends Action $this->hidden('token', common_session_token()); $this->elementStart('fieldset', array('id' => 'form_openid_createaccount')); $this->element('legend', null, - _('Create new account')); + _m('Create new account')); $this->element('p', null, - _('Create a new user with this nickname.')); + _m('Create a new user with this nickname.')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); - $this->input('newname', _('New nickname'), + $this->input('newname', _m('New nickname'), ($this->username) ? $this->username : '', - _('1-64 lowercase letters or numbers, no punctuation or spaces')); + _m('1-64 lowercase letters or numbers, no punctuation or spaces')); $this->elementEnd('li'); $this->elementStart('li'); $this->element('input', array('type' => 'checkbox', @@ -111,30 +111,30 @@ class FinishopenidloginAction extends Action 'value' => 'true')); $this->elementStart('label', array('for' => 'license', 'class' => 'checkbox')); - $this->text(_('My text and files are available under ')); + $this->text(_m('My text and files are available under ')); $this->element('a', array('href' => common_config('license', 'url')), common_config('license', 'title')); - $this->text(_(' except this private data: password, email address, IM address, phone number.')); + $this->text(_m(' except this private data: password, email address, IM address, phone number.')); $this->elementEnd('label'); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('create', _('Create')); + $this->submit('create', _m('Create')); $this->elementEnd('fieldset'); $this->elementStart('fieldset', array('id' => 'form_openid_createaccount')); $this->element('legend', null, - _('Connect existing account')); + _m('Connect existing account')); $this->element('p', null, - _('If you already have an account, login with your username and password to connect it to your OpenID.')); + _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'); - $this->input('nickname', _('Existing nickname')); + $this->input('nickname', _m('Existing nickname')); $this->elementEnd('li'); $this->elementStart('li'); - $this->password('password', _('Password')); + $this->password('password', _m('Password')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('connect', _('Connect')); + $this->submit('connect', _m('Connect')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } @@ -146,11 +146,11 @@ class FinishopenidloginAction extends Action $response = $consumer->complete(common_local_url('finishopenidlogin')); if ($response->status == Auth_OpenID_CANCEL) { - $this->message(_('OpenID authentication cancelled.')); + $this->message(_m('OpenID authentication cancelled.')); return; } else if ($response->status == Auth_OpenID_FAILURE) { // Authentication failed; display the error message. - $this->message(sprintf(_('OpenID authentication failed: %s'), $response->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 // identity URL and Simple Registration data (if it was @@ -212,7 +212,7 @@ class FinishopenidloginAction extends Action # FIXME: save invite code before redirect, and check here if (common_config('site', 'closed')) { - $this->clientError(_('Registration not allowed.')); + $this->clientError(_m('Registration not allowed.')); return; } @@ -221,14 +221,14 @@ class FinishopenidloginAction extends Action if (common_config('site', 'inviteonly')) { $code = $_SESSION['invitecode']; if (empty($code)) { - $this->clientError(_('Registration not allowed.')); + $this->clientError(_m('Registration not allowed.')); return; } $invite = Invitation::staticGet($code); if (empty($invite)) { - $this->clientError(_('Not a valid invitation code.')); + $this->clientError(_m('Not a valid invitation code.')); return; } } @@ -238,24 +238,24 @@ class FinishopenidloginAction extends Action if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { - $this->showForm(_('Nickname must have only lowercase letters and numbers and no spaces.')); + $this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.')); return; } if (!User::allowed_nickname($nickname)) { - $this->showForm(_('Nickname not allowed.')); + $this->showForm(_m('Nickname not allowed.')); return; } if (User::staticGet('nickname', $nickname)) { - $this->showForm(_('Nickname already in use. Try another one.')); + $this->showForm(_m('Nickname already in use. Try another one.')); return; } list($display, $canonical, $sreg) = $this->getSavedValues(); if (!$display || !$canonical) { - $this->serverError(_('Stored OpenID not found.')); + $this->serverError(_m('Stored OpenID not found.')); return; } @@ -264,7 +264,7 @@ class FinishopenidloginAction extends Action $other = oid_get_user($canonical); if ($other) { - $this->serverError(_('Creating new account for OpenID that already has a user.')); + $this->serverError(_m('Creating new account for OpenID that already has a user.')); return; } @@ -324,7 +324,7 @@ class FinishopenidloginAction extends Action $password = $this->trimmed('password'); if (!common_check_user($nickname, $password)) { - $this->showForm(_('Invalid username or password.')); + $this->showForm(_m('Invalid username or password.')); return; } @@ -335,14 +335,14 @@ class FinishopenidloginAction extends Action list($display, $canonical, $sreg) = $this->getSavedValues(); if (!$display || !$canonical) { - $this->serverError(_('Stored OpenID not found.')); + $this->serverError(_m('Stored OpenID not found.')); return; } $result = oid_link_user($user->id, $canonical, $display); if (!$result) { - $this->serverError(_('Error connecting user to OpenID.')); + $this->serverError(_m('Error connecting user to OpenID.')); return; } diff --git a/plugins/OpenID/locale/OpenID.po b/plugins/OpenID/locale/OpenID.po new file mode 100644 index 0000000000..34738bc750 --- /dev/null +++ b/plugins/OpenID/locale/OpenID.po @@ -0,0 +1,344 @@ +# 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: 2009-12-07 20:38-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" + +#: openidlogin.php:30 finishopenidlogin.php:34 +msgid "Already logged in." +msgstr "" + +#: openidlogin.php:37 openidsettings.php:194 finishopenidlogin.php:38 +msgid "There was a problem with your session token. Try again, please." +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:95 finishaddopenid.php:170 +msgid "OpenID Login" +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 "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: openidtrust.php:51 +msgid "OpenID Identity Verification" +msgstr "" + +#: openidtrust.php:69 +msgid "" +"This page should only be reached during OpenID processing, not directly." +msgstr "" + +#: openidtrust.php:118 +#, 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 +msgid "Continue" +msgstr "" + +#: openidtrust.php:137 +msgid "Cancel" +msgstr "" + +#: 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 "" + +#: openidsettings.php:59 +msgid "OpenID settings" +msgstr "" + +#: openidsettings.php:70 +#, php-format +msgid "" +"[OpenID](%%doc.openid%%) lets you log into many sites with the same user " +"account. Manage your associated OpenIDs from here." +msgstr "" + +#: openidsettings.php:99 +msgid "Add OpenID" +msgstr "" + +#: openidsettings.php:102 +msgid "" +"If you want to add an OpenID to your account, enter it in the box below and " +"click \"Add\"." +msgstr "" + +#: openidsettings.php:117 +msgid "Add" +msgstr "" + +#: openidsettings.php:129 +msgid "Remove OpenID" +msgstr "" + +#: openidsettings.php:134 +msgid "" +"Removing your only OpenID would make it impossible to log in! If you need to " +"remove it, add another OpenID first." +msgstr "" + +#: openidsettings.php:149 +msgid "" +"You can remove an OpenID from your account by clicking the button marked " +"\"Remove\"." +msgstr "" + +#: openidsettings.php:172 +msgid "Remove" +msgstr "" + +#: openidsettings.php:208 finishopenidlogin.php:52 +msgid "Something weird happened." +msgstr "" + +#: openidsettings.php:228 +msgid "No such OpenID." +msgstr "" + +#: openidsettings.php:233 +msgid "That OpenID does not belong to you." +msgstr "" + +#: openidsettings.php:237 +msgid "OpenID removed." +msgstr "" + +#: finishopenidlogin.php:43 +msgid "You can't register if you don't agree to the license." +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 "" diff --git a/plugins/OpenID/openid.php b/plugins/OpenID/openid.php index dd628e7733..8f949c9c5d 100644 --- a/plugins/OpenID/openid.php +++ b/plugins/OpenID/openid.php @@ -138,7 +138,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) $consumer = oid_consumer(); if (!$consumer) { - common_server_error(_('Cannot instantiate OpenID consumer object.')); + common_server_error(_m('Cannot instantiate OpenID consumer object.')); return false; } @@ -148,9 +148,9 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) // Handle failure status return values. if (!$auth_request) { - return _('Not a valid OpenID.'); + return _m('Not a valid OpenID.'); } else if (Auth_OpenID::isFailure($auth_request)) { - return sprintf(_('OpenID failure: %s'), $auth_request->message); + return sprintf(_m('OpenID failure: %s'), $auth_request->message); } $sreg_request = Auth_OpenID_SRegRequest::build(// Required @@ -177,7 +177,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) $immediate); if (!$redirect_url) { } else if (Auth_OpenID::isFailure($redirect_url)) { - return sprintf(_('Could not redirect to server: %s'), $redirect_url->message); + return sprintf(_m('Could not redirect to server: %s'), $redirect_url->message); } else { common_redirect($redirect_url, 303); } @@ -195,7 +195,7 @@ 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)) { - common_server_error(sprintf(_('Could not create OpenID form: %s'), $form_html->message)); + common_server_error(sprintf(_m('Could not create OpenID form: %s'), $form_html->message)); } else { $action = new AutosubmitAction(); // see below $action->form_html = $form_html; @@ -211,7 +211,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) function _oid_print_instructions() { common_element('div', 'instructions', - _('This form should automatically submit itself. '. + _m('This form should automatically submit itself. '. 'If not, click the submit button to go to your '. 'OpenID provider.')); } @@ -243,7 +243,7 @@ function oid_update_user(&$user, &$sreg) # XXX save timezone if it's passed if (!$profile->update($orig_profile)) { - common_server_error(_('Error saving the profile.')); + common_server_error(_m('Error saving the profile.')); return false; } @@ -254,7 +254,7 @@ function oid_update_user(&$user, &$sreg) } if (!$user->update($orig_user)) { - common_server_error(_('Error saving the user.')); + common_server_error(_m('Error saving the user.')); return false; } @@ -274,7 +274,7 @@ class AutosubmitAction extends Action function title() { - return _('OpenID Auto-Submit'); + return _m('OpenID Auto-Submit'); } function showContent() diff --git a/plugins/OpenID/openidlogin.php b/plugins/OpenID/openidlogin.php index 29e89234e9..9ba55911c0 100644 --- a/plugins/OpenID/openidlogin.php +++ b/plugins/OpenID/openidlogin.php @@ -27,14 +27,14 @@ class OpenidloginAction extends Action { parent::handle($args); if (common_is_real_login()) { - $this->clientError(_('Already logged in.')); + $this->clientError(_m('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $openid_url = $this->trimmed('openid_url'); # CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. Try again, please.'), $openid_url); + $this->showForm(_m('There was a problem with your session token. Try again, please.'), $openid_url); return; } @@ -63,11 +63,11 @@ class OpenidloginAction extends Action common_get_returnto()) { // rememberme logins have to reauthenticate before // changing any profile settings (cookie-stealing protection) - return _('For security reasons, please re-login with your ' . + return _m('For security reasons, please re-login with your ' . '[OpenID](%%doc.openid%%) ' . 'before changing your settings.'); } else { - return _('Login with an [OpenID](%%doc.openid%%) account.'); + return _m('Login with an [OpenID](%%doc.openid%%) account.'); } } @@ -92,7 +92,7 @@ class OpenidloginAction extends Action function title() { - return _('OpenID Login'); + return _m('OpenID Login'); } function showForm($error=null, $openid_url) @@ -109,22 +109,22 @@ class OpenidloginAction extends Action 'class' => 'form_settings', 'action' => $formaction)); $this->elementStart('fieldset'); - $this->element('legend', null, _('OpenID login')); + $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', _('OpenID URL'), + $this->input('openid_url', _m('OpenID URL'), $this->openid_url, - _('Your OpenID URL')); + _m('Your OpenID URL')); $this->elementEnd('li'); $this->elementStart('li', array('id' => 'settings_rememberme')); - $this->checkbox('rememberme', _('Remember me'), false, - _('Automatically login in the future; ' . + $this->checkbox('rememberme', _m('Remember me'), false, + _m('Automatically login in the future; ' . 'not for shared computers!')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('submit', _('Login')); + $this->submit('submit', _m('Login')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } diff --git a/plugins/OpenID/openidserver.php b/plugins/OpenID/openidserver.php index dab97c93ed..181cbdf45e 100644 --- a/plugins/OpenID/openidserver.php +++ b/plugins/OpenID/openidserver.php @@ -103,7 +103,7 @@ class OpenidserverAction extends Action $response = $this->generateDenyResponse($request); } else { //invalid - $this->clientError(sprintf(_('You are not authorized to use the identity %s'),$request->identity),$code=403); + $this->clientError(sprintf(_m('You are not authorized to use the identity %s'),$request->identity),$code=403); } } else { $response = $this->oserver->handleRequest($request); @@ -123,7 +123,7 @@ class OpenidserverAction extends Action } $this->raw($response->body); }else{ - $this->clientError(_('Just an OpenID provider. Nothing to see here, move along...'),$code=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 3ad46f5f57..3fc3d61289 100644 --- a/plugins/OpenID/openidsettings.php +++ b/plugins/OpenID/openidsettings.php @@ -56,7 +56,7 @@ class OpenidsettingsAction extends AccountSettingsAction function title() { - return _('OpenID settings'); + return _m('OpenID settings'); } /** @@ -67,7 +67,7 @@ class OpenidsettingsAction extends AccountSettingsAction function getInstructions() { - return _('[OpenID](%%doc.openid%%) lets you log into many sites' . + return _m('[OpenID](%%doc.openid%%) lets you log into many sites' . ' with the same user account.'. ' Manage your associated OpenIDs from here.'); } @@ -96,15 +96,15 @@ class OpenidsettingsAction extends AccountSettingsAction 'action' => common_local_url('openidsettings'))); $this->elementStart('fieldset', array('id' => 'settings_openid_add')); - $this->element('legend', null, _('Add OpenID')); + $this->element('legend', null, _m('Add OpenID')); $this->hidden('token', common_session_token()); $this->element('p', 'form_guide', - _('If you want to add an OpenID to your account, ' . + _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'), - _('OpenID URL')); + _m('OpenID URL')); $this->element('input', array('name' => 'openid_url', 'type' => 'text', 'id' => 'openid_url')); @@ -114,7 +114,7 @@ class OpenidsettingsAction extends AccountSettingsAction 'id' => 'settings_openid_add_action-submit', 'name' => 'add', 'class' => 'submit', - 'value' => _('Add'))); + 'value' => _m('Add'))); $this->elementEnd('fieldset'); $this->elementEnd('form'); @@ -126,12 +126,12 @@ class OpenidsettingsAction extends AccountSettingsAction if ($cnt > 0) { - $this->element('h2', null, _('Remove OpenID')); + $this->element('h2', null, _m('Remove OpenID')); if ($cnt == 1 && !$user->password) { $this->element('p', 'form_guide', - _('Removing your only OpenID '. + _m('Removing your only OpenID '. 'would make it impossible to log in! ' . 'If you need to remove it, '. 'add another OpenID first.')); @@ -146,7 +146,7 @@ class OpenidsettingsAction extends AccountSettingsAction } else { $this->element('p', 'form_guide', - _('You can remove an OpenID from your account '. + _m('You can remove an OpenID from your account '. 'by clicking the button marked "Remove".')); $idx = 0; @@ -169,7 +169,7 @@ class OpenidsettingsAction extends AccountSettingsAction 'id' => 'remove'.$idx, 'name' => 'remove', 'class' => 'submit remove', - 'value' => _('Remove'))); + 'value' => _m('Remove'))); $this->elementEnd('fieldset'); $this->elementEnd('form'); $idx++; @@ -191,7 +191,7 @@ class OpenidsettingsAction extends AccountSettingsAction // CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. '. + $this->showForm(_m('There was a problem with your session token. '. 'Try again, please.')); return; } @@ -205,7 +205,7 @@ class OpenidsettingsAction extends AccountSettingsAction } else if ($this->arg('remove')) { $this->removeOpenid(); } else { - $this->showForm(_('Something weird happened.')); + $this->showForm(_m('Something weird happened.')); } } @@ -225,16 +225,16 @@ class OpenidsettingsAction extends AccountSettingsAction $oid = User_openid::staticGet('canonical', $openid_url); if (!$oid) { - $this->showForm(_('No such OpenID.')); + $this->showForm(_m('No such OpenID.')); return; } $cur = common_current_user(); if (!$cur || $oid->user_id != $cur->id) { - $this->showForm(_('That OpenID does not belong to you.')); + $this->showForm(_m('That OpenID does not belong to you.')); return; } $oid->delete(); - $this->showForm(_('OpenID removed.'), true); + $this->showForm(_m('OpenID removed.'), true); return; } } diff --git a/plugins/OpenID/openidtrust.php b/plugins/OpenID/openidtrust.php index 29c7bdc23c..fa7ea36e26 100644 --- a/plugins/OpenID/openidtrust.php +++ b/plugins/OpenID/openidtrust.php @@ -48,7 +48,7 @@ class OpenidtrustAction extends Action function title() { - return _('OpenID Identity Verification'); + return _m('OpenID Identity Verification'); } function prepare($args) @@ -66,7 +66,7 @@ class OpenidtrustAction extends Action $this->allowUrl = $_SESSION['openid_allow_url']; $this->denyUrl = $_SESSION['openid_deny_url']; if(empty($this->trust_root) || empty($this->allowUrl) || empty($this->denyUrl)){ - $this->clientError(_('This page should only be reached during OpenID processing, not directly.')); + $this->clientError(_m('This page should only be reached during OpenID processing, not directly.')); return; } return true; @@ -115,7 +115,7 @@ class OpenidtrustAction extends Action function showPageNotice() { - $this->element('p',null,sprintf(_('%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.'),$this->trust_root)); + $this->element('p',null,sprintf(_m('%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password.'),$this->trust_root)); } /** @@ -133,8 +133,8 @@ class OpenidtrustAction extends Action 'class' => 'form_settings', 'action' => common_local_url('openidtrust'))); $this->elementStart('fieldset'); - $this->submit('allow', _('Continue')); - $this->submit('deny', _('Cancel')); + $this->submit('allow', _m('Continue')); + $this->submit('deny', _m('Cancel')); $this->elementEnd('fieldset'); $this->elementEnd('form'); diff --git a/plugins/Sample/SamplePlugin.php b/plugins/Sample/SamplePlugin.php new file mode 100644 index 0000000000..6e361aafbe --- /dev/null +++ b/plugins/Sample/SamplePlugin.php @@ -0,0 +1,59 @@ +. + */ + +/** + * @package SamplePlugin + * @maintainer Your Name + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +class SamplePlugin extends Plugin +{ + function onInitializePlugin() + { + // Event handlers normally return true to indicate that all is well. + // + // Returning false will cancel further processing of any other + // plugins or core code hooking the same event. + return true; + } + + /** + * Hook for RouterInitialized event. + * + * @param Net_URL_Mapper $m path-to-action mapper + * @return boolean hook return + */ + + function onRouterInitialized($m) + { + $m->connect(':nickname/samples', + array('action' => 'showsamples'), + array('feed' => '[A-Za-z0-9_-]+')); + $m->connect('settings/sample', + array('action' => 'samplesettings')); + return true; + } +} + diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index adf9ceda34..de1181903e 100644 --- a/plugins/TwitterBridge/TwitterBridgePlugin.php +++ b/plugins/TwitterBridge/TwitterBridgePlugin.php @@ -86,8 +86,8 @@ class TwitterBridgePlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('twittersettings'), - _('Twitter'), - _('Twitter integration options'), + _m('Twitter'), + _m('Twitter integration options'), $action_name === 'twittersettings'); return true; diff --git a/plugins/TwitterBridge/locale/TwitterBridge.po b/plugins/TwitterBridge/locale/TwitterBridge.po new file mode 100644 index 0000000000..14c30f1c9c --- /dev/null +++ b/plugins/TwitterBridge/locale/TwitterBridge.po @@ -0,0 +1,128 @@ +# 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: 2009-12-07 20:38-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" + +#: twitterauthorization.php:81 +msgid "Not logged in." +msgstr "" + +#: twitterauthorization.php:131 twitterauthorization.php:150 +#: twitterauthorization.php:170 twitterauthorization.php:217 +msgid "Couldn't link your Twitter account." +msgstr "" + +#: TwitterBridgePlugin.php:89 +msgid "Twitter" +msgstr "" + +#: TwitterBridgePlugin.php:90 +msgid "Twitter integration options" +msgstr "" + +#: twittersettings.php:59 +msgid "Twitter settings" +msgstr "" + +#: twittersettings.php:70 +msgid "" +"Connect your Twitter account to share your updates with your Twitter friends " +"and vice-versa." +msgstr "" + +#: twittersettings.php:118 +msgid "Twitter account" +msgstr "" + +#: twittersettings.php:123 +msgid "Connected Twitter account" +msgstr "" + +#: twittersettings.php:125 +msgid "Remove" +msgstr "" + +#: twittersettings.php:131 +msgid "Preferences" +msgstr "" + +#: twittersettings.php:135 +msgid "Automatically send my notices to Twitter." +msgstr "" + +#: twittersettings.php:142 +msgid "Send local \"@\" replies to Twitter." +msgstr "" + +#: twittersettings.php:149 +msgid "Subscribe to my Twitter friends here." +msgstr "" + +#: twittersettings.php:158 +msgid "Import my Friends Timeline." +msgstr "" + +#: twittersettings.php:174 +msgid "Save" +msgstr "" + +#: twittersettings.php:176 +msgid "Add" +msgstr "" + +#: twittersettings.php:201 +msgid "There was a problem with your session token. Try again, please." +msgstr "" + +#: twittersettings.php:211 +msgid "Unexpected form submission." +msgstr "" + +#: twittersettings.php:230 +msgid "Couldn't remove Twitter user." +msgstr "" + +#: twittersettings.php:234 +msgid "Twitter account removed." +msgstr "" + +#: twittersettings.php:255 twittersettings.php:265 +msgid "Couldn't save Twitter preferences." +msgstr "" + +#: twittersettings.php:269 +msgid "Twitter preferences saved." +msgstr "" + +#: twitter.php:333 +msgid "Your Twitter bridge has been disabled." +msgstr "" + +#: twitter.php:337 +#, php-format +msgid "" +"Hi, %1$s. We're sorry to inform you that your link to Twitter has been " +"disabled. We no longer seem to have permission to update your Twitter " +"status. (Did you revoke %3$s's access?)\n" +"\n" +"You can re-enable your Twitter bridge by visiting your Twitter settings " +"page:\n" +"\n" +"\t%2$s\n" +"\n" +"Regards,\n" +"%3$s\n" +msgstr "" diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php index fd51506388..b338a200de 100644 --- a/plugins/TwitterBridge/twitter.php +++ b/plugins/TwitterBridge/twitter.php @@ -330,11 +330,11 @@ function mail_twitter_bridge_removed($user) $profile = $user->getProfile(); - $subject = sprintf(_('Your Twitter bridge has been disabled.')); + $subject = sprintf(_m('Your Twitter bridge has been disabled.')); $site_name = common_config('site', 'name'); - $body = sprintf(_('Hi, %1$s. We\'re sorry to inform you that your ' . + $body = sprintf(_m('Hi, %1$s. We\'re sorry to inform you that your ' . 'link to Twitter has been disabled. We no longer seem to have ' . 'permission to update your Twitter status. (Did you revoke ' . '%3$s\'s access?)' . "\n\n" . diff --git a/plugins/TwitterBridge/twitterauthorization.php b/plugins/TwitterBridge/twitterauthorization.php index f1daefab12..4af2f03941 100644 --- a/plugins/TwitterBridge/twitterauthorization.php +++ b/plugins/TwitterBridge/twitterauthorization.php @@ -78,7 +78,7 @@ class TwitterauthorizationAction extends Action parent::handle($args); if (!common_logged_in()) { - $this->clientError(_('Not logged in.'), 403); + $this->clientError(_m('Not logged in.'), 403); } $user = common_current_user(); @@ -128,7 +128,7 @@ class TwitterauthorizationAction extends Action } catch (OAuthClientException $e) { $msg = sprintf('OAuth client cURL error - code: %1s, msg: %2s', $e->getCode(), $e->getMessage()); - $this->serverError(_('Couldn\'t link your Twitter account.')); + $this->serverError(_m('Couldn\'t link your Twitter account.')); } common_redirect($auth_link); @@ -147,7 +147,7 @@ class TwitterauthorizationAction extends Action // token we sent them if ($_SESSION['twitter_request_token'] != $this->oauth_token) { - $this->serverError(_('Couldn\'t link your Twitter account.')); + $this->serverError(_m('Couldn\'t link your Twitter account.')); } try { @@ -167,7 +167,7 @@ class TwitterauthorizationAction extends Action } catch (OAuthClientException $e) { $msg = sprintf('OAuth client cURL error - code: %1$s, msg: %2$s', $e->getCode(), $e->getMessage()); - $this->serverError(_('Couldn\'t link your Twitter account.')); + $this->serverError(_m('Couldn\'t link your Twitter account.')); } // Save the access token and Twitter user info @@ -214,7 +214,7 @@ class TwitterauthorizationAction extends Action if (empty($flink_id)) { common_log_db_error($flink, 'INSERT', __FILE__); - $this->serverError(_('Couldn\'t link your Twitter account.')); + $this->serverError(_m('Couldn\'t link your Twitter account.')); } save_twitter_user($twitter_user->id, $twitter_user->screen_name); diff --git a/plugins/TwitterBridge/twittersettings.php b/plugins/TwitterBridge/twittersettings.php index ca22c95535..bc9a636a15 100644 --- a/plugins/TwitterBridge/twittersettings.php +++ b/plugins/TwitterBridge/twittersettings.php @@ -56,7 +56,7 @@ class TwittersettingsAction extends ConnectSettingsAction function title() { - return _('Twitter settings'); + return _m('Twitter settings'); } /** @@ -67,8 +67,8 @@ class TwittersettingsAction extends ConnectSettingsAction function getInstructions() { - return _('Connect your Twitter account to share your updates ' . - 'with your Twitter friends and vice-versa.'); + return _m('Connect your Twitter account to share your updates ' . + 'with your Twitter friends and vice-versa.'); } /** @@ -115,38 +115,38 @@ class TwittersettingsAction extends ConnectSettingsAction $this->elementEnd('fieldset'); } else { - $this->element('legend', null, _('Twitter account')); + $this->element('legend', null, _m('Twitter account')); $this->elementStart('p', array('id' => 'form_confirmed')); $this->element('a', array('href' => $fuser->uri), $fuser->nickname); $this->elementEnd('p'); $this->element('p', 'form_note', - _('Connected Twitter account')); + _m('Connected Twitter account')); - $this->submit('remove', _('Remove')); + $this->submit('remove', _m('Remove')); $this->elementEnd('fieldset'); $this->elementStart('fieldset', array('id' => 'settings_twitter_preferences')); - $this->element('legend', null, _('Preferences')); + $this->element('legend', null, _m('Preferences')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); $this->checkbox('noticesend', - _('Automatically send my notices to Twitter.'), + _m('Automatically send my notices to Twitter.'), ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true); $this->elementEnd('li'); $this->elementStart('li'); $this->checkbox('replysync', - _('Send local "@" replies to Twitter.'), + _m('Send local "@" replies to Twitter.'), ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true); $this->elementEnd('li'); $this->elementStart('li'); $this->checkbox('friendsync', - _('Subscribe to my Twitter friends here.'), + _m('Subscribe to my Twitter friends here.'), ($flink) ? ($flink->friendsync & FOREIGN_FRIEND_RECV) : false); @@ -155,7 +155,7 @@ class TwittersettingsAction extends ConnectSettingsAction if (common_config('twitterimport','enabled')) { $this->elementStart('li'); $this->checkbox('noticerecv', - _('Import my Friends Timeline.'), + _m('Import my Friends Timeline.'), ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_RECV) : false); @@ -171,9 +171,9 @@ class TwittersettingsAction extends ConnectSettingsAction $this->elementEnd('ul'); if ($flink) { - $this->submit('save', _('Save')); + $this->submit('save', _m('Save')); } else { - $this->submit('add', _('Add')); + $this->submit('add', _m('Add')); } $this->elementEnd('fieldset'); @@ -198,8 +198,8 @@ class TwittersettingsAction extends ConnectSettingsAction // CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { - $this->showForm(_('There was a problem with your session token. '. - 'Try again, please.')); + $this->showForm(_m('There was a problem with your session token. '. + 'Try again, please.')); return; } @@ -208,7 +208,7 @@ class TwittersettingsAction extends ConnectSettingsAction } else if ($this->arg('remove')) { $this->removeTwitterAccount(); } else { - $this->showForm(_('Unexpected form submission.')); + $this->showForm(_m('Unexpected form submission.')); } } @@ -227,11 +227,11 @@ class TwittersettingsAction extends ConnectSettingsAction if (empty($result)) { common_log_db_error($flink, 'DELETE', __FILE__); - $this->serverError(_('Couldn\'t remove Twitter user.')); + $this->serverError(_m('Couldn\'t remove Twitter user.')); return; } - $this->showForm(_('Twitter account removed.'), true); + $this->showForm(_m('Twitter account removed.'), true); } /** @@ -252,7 +252,7 @@ class TwittersettingsAction extends ConnectSettingsAction if (empty($flink)) { common_log_db_error($flink, 'SELECT', __FILE__); - $this->showForm(_('Couldn\'t save Twitter preferences.')); + $this->showForm(_m('Couldn\'t save Twitter preferences.')); return; } @@ -262,11 +262,11 @@ class TwittersettingsAction extends ConnectSettingsAction if ($result === false) { common_log_db_error($flink, 'UPDATE', __FILE__); - $this->showForm(_('Couldn\'t save Twitter preferences.')); + $this->showForm(_m('Couldn\'t save Twitter preferences.')); return; } - $this->showForm(_('Twitter preferences saved.'), true); + $this->showForm(_m('Twitter preferences saved.'), true); } } diff --git a/scripts/update_po_templates.php b/scripts/update_po_templates.php new file mode 100755 index 0000000000..83bff6d806 --- /dev/null +++ b/scripts/update_po_templates.php @@ -0,0 +1,211 @@ +#!/usr/bin/env php +. + */ + +// Abort if called from a web server +if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { + print "This script must be run from the command line\n"; + exit(); +} + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +function update_core($dir, $domain) +{ + $old = getcwd(); + chdir($dir); + passthru(<<isDir() && !$item->isDot()) { + $name = $item->getBasename(); + if (file_exists("$dir/plugins/$name/{$name}Plugin.php")) { + $plugins[] = $name; + } + } + } + return $plugins; +} + +function get_plugin_sources($dir) +{ + $files = array(); + + $dirs = new RecursiveDirectoryIterator($dir); + $iter = new RecursiveIteratorIterator($dirs); + foreach ($iter as $pathname => $item) { + if ($item->isFile() && preg_match('/\.php$/', $item->getBaseName())) { + $files[] = $pathname; + } + } + return $files; +} + +function plugin_using_gettext($dir) +{ + $files = get_plugin_sources($dir); + foreach ($files as $pathname) { + // Check if the file is using our _m gettext wrapper + $code = file_get_contents($pathname); + if (preg_match('/\b_m\(/', $code)) { + return true; + } + } + + return false; +} + +function update_plugin($basedir, $name) +{ + $dir = "$basedir/plugins/$name"; + if (plugin_using_gettext($dir)) { + do_update_plugin($dir, $name); + do_translatewiki_plugin($basedir, $name); + return true; + } else { + return false; + } +} + +$args = $_SERVER['argv']; +array_shift($args); + +$all = false; +$core = false; +$allplugins = false; +$plugins = array(); +if (count($args) == 0) { + $all = true; +} +foreach ($args as $arg) { + if ($arg == '--all') { + $all = true; + } elseif ($arg == "--core") { + $core = true; + } elseif ($arg == "--plugins") { + $allplugins = true; + } elseif (substr($arg, 0, 9) == "--plugin=") { + $plugins[] = substr($arg, 9); + } +} + + + +if ($all || $core) { + echo "core..."; + update_core(INSTALLDIR, 'statusnet'); + echo " ok\n"; +} +if ($all || $allplugins) { + $plugins = get_plugins(INSTALLDIR); +} +if ($plugins) { + foreach ($plugins as $plugin) { + echo "$plugin..."; + if (update_plugin(INSTALLDIR, $plugin)) { + echo " ok\n"; + } else { + echo " not localized\n"; + } + } +} + diff --git a/scripts/update_pot.sh b/scripts/update_pot.sh deleted file mode 100755 index de53fe7c90..0000000000 --- a/scripts/update_pot.sh +++ /dev/null @@ -1,13 +0,0 @@ -cd `dirname $0` -cd .. -xgettext \ - --from-code=UTF-8 \ - --default-domain=statusnet \ - --output=locale/statusnet.po \ - --language=PHP \ - --keyword="pgettext:1c,2" \ - --keyword="npgettext:1c,2,3" \ - actions/*.php \ - classes/*.php \ - lib/*.php \ - scripts/*.php From dfba47bdf4d3a8eda1778007e274c57de4c3451c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 15:32:50 -0500 Subject: [PATCH 58/70] include DB_DataObject 1.9.0 --- extlib/DB/DataObject.php | 258 ++++++++++++++++++++++------- extlib/DB/DataObject/Generator.php | 21 +-- 2 files changed, 207 insertions(+), 72 deletions(-) diff --git a/extlib/DB/DataObject.php b/extlib/DB/DataObject.php index 60ff1441b5..a69fbae86b 100644 --- a/extlib/DB/DataObject.php +++ b/extlib/DB/DataObject.php @@ -15,7 +15,7 @@ * @author Alan Knowles * @copyright 1997-2006 The PHP Group * @license http://www.php.net/license/3_01.txt PHP License 3.01 - * @version CVS: $Id: DataObject.php 284150 2009-07-15 23:27:59Z alan_k $ + * @version CVS: $Id: DataObject.php 291349 2009-11-27 09:15:18Z alan_k $ * @link http://pear.php.net/package/DB_DataObject */ @@ -235,7 +235,7 @@ class DB_DataObject extends DB_DataObject_Overload * @access private * @var string */ - var $_DB_DataObject_version = "1.8.12"; + var $_DB_DataObject_version = "1.9.0"; /** * The Database table (used by table extends) @@ -309,7 +309,8 @@ class DB_DataObject extends DB_DataObject_Overload /** * An autoloading, caching static get method using key, value (based on get) - * + * (depreciated - use ::get / and your own caching method) + * * Usage: * $object = DB_DataObject::staticGet("DbTable_mytable",12); * or @@ -942,9 +943,13 @@ class DB_DataObject extends DB_DataObject_Overload } $this->$key = $keyvalue; } - - - + + // if we haven't set disable_null_strings to "full" + $ignore_null = !isset($options['disable_null_strings']) + || !is_string($options['disable_null_strings']) + || strtolower($options['disable_null_strings']) !== 'full' ; + + foreach($items as $k => $v) { // if we are using autoincrement - skip the column... @@ -953,7 +958,10 @@ class DB_DataObject extends DB_DataObject_Overload } - if (!isset($this->$k)) { + + + // Ignore variables which aren't set to a value + if ( !isset($this->$k) && $ignore_null) { continue; } // dont insert data into mysql timestamps @@ -980,8 +988,7 @@ class DB_DataObject extends DB_DataObject_Overload } - - if (!isset($options['disable_null_strings']) && is_string($this->$k) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) { + if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) { $rightq .= " NULL "; continue; } @@ -1194,8 +1201,14 @@ class DB_DataObject extends DB_DataObject_Overload $options = $_DB_DATAOBJECT['CONFIG']; + $ignore_null = !isset($options['disable_null_strings']) + || !is_string($options['disable_null_strings']) + || strtolower($options['disable_null_strings']) !== 'full' ; + + foreach($items as $k => $v) { - if (!isset($this->$k)) { + + if (!isset($this->$k) && $ignore_null) { continue; } // ignore stuff thats @@ -1234,7 +1247,7 @@ class DB_DataObject extends DB_DataObject_Overload } // special values ... at least null is handled... - if (!isset($options['disable_null_strings']) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) { + if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) { $settings .= "$kSql = NULL "; continue; } @@ -1796,10 +1809,15 @@ class DB_DataObject extends DB_DataObject_Overload } - + $_DB_DATAOBJECT['INI'][$this->_database] = array(); foreach ($schemas as $ini) { if (file_exists($ini) && is_file($ini)) { - $_DB_DATAOBJECT['INI'][$this->_database] = parse_ini_file($ini, true); + + $_DB_DATAOBJECT['INI'][$this->_database] = array_merge( + $_DB_DATAOBJECT['INI'][$this->_database], + parse_ini_file($ini, true) + ); + if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { if (!is_readable ($ini)) { $this->debug("ini file is not readable: $ini","databaseStructure",1); @@ -2478,7 +2496,8 @@ class DB_DataObject extends DB_DataObject_Overload $x = new DB_DataObject; $this->_query= $x->_query; } - + + foreach($keys as $k => $v) { // index keys is an indexed array /* these filter checks are a bit suspicious.. @@ -2519,7 +2538,7 @@ class DB_DataObject extends DB_DataObject_Overload continue; } - if (!isset($options['disable_null_strings']) && (strtolower($this->$k) === 'null') && !($v & DB_DATAOBJECT_NOTNULL)) { + if (!($v & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($this,$k)) { $this->whereAdd(" $kSql IS NULL"); continue; } @@ -2624,15 +2643,31 @@ class DB_DataObject extends DB_DataObject_Overload } // does this need multi db support?? - $p = isset($_DB_DATAOBJECT['CONFIG']['class_prefix']) ? - $_DB_DATAOBJECT['CONFIG']['class_prefix'] : ''; - $class = $p . preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)); - $ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class); + $cp = isset($_DB_DATAOBJECT['CONFIG']['class_prefix']) ? + explode(PATH_SEPARATOR, $_DB_DATAOBJECT['CONFIG']['class_prefix']) : ''; - $class = $ce ? $class : DB_DataObject::_autoloadClass($class); + // multiprefix support. + $tbl = preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)); + if (is_array($cp)) { + $class = array(); + foreach($cp as $cpr) { + $ce = substr(phpversion(),0,1) > 4 ? class_exists($cpr . $tbl,false) : class_exists($cpr . $tbl); + if ($ce) { + $class = $cpr . $tbl; + break; + } + $class[] = $cpr . $tbl; + } + } else { + $class = $tbl; + $ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class); + } + + + $rclass = $ce ? $class : DB_DataObject::_autoloadClass($class, $table); // proxy = full|light - if (!$class && isset($_DB_DATAOBJECT['CONFIG']['proxy'])) { + if (!$rclass && isset($_DB_DATAOBJECT['CONFIG']['proxy'])) { DB_DataObject::debug("FAILED TO Autoload $database.$table - using proxy.","FACTORY",1); @@ -2653,12 +2688,14 @@ class DB_DataObject extends DB_DataObject_Overload return $x->$proxyMethod( $d->_database, $table); } - if (!$class) { + if (!$rclass) { return DB_DataObject::raiseError( - "factory could not find class $class from $table", + "factory could not find class " . + (is_array($class) ? implode(PATH_SEPARATOR, $class) : $class ). + "from $table", DB_DATAOBJECT_ERROR_INVALIDCONFIG); } - $ret = new $class; + $ret = new $rclass; if (!empty($database)) { DB_DataObject::debug("Setting database to $database","FACTORY",1); $ret->database($database); @@ -2668,11 +2705,12 @@ class DB_DataObject extends DB_DataObject_Overload /** * autoload Class * - * @param string $class Class + * @param string|array $class Class + * @param string $table Table trying to load. * @access private * @return string classname on Success */ - function _autoloadClass($class) + function _autoloadClass($class, $table=false) { global $_DB_DATAOBJECT; @@ -2682,32 +2720,62 @@ class DB_DataObject extends DB_DataObject_Overload $class_prefix = empty($_DB_DATAOBJECT['CONFIG']['class_prefix']) ? '' : $_DB_DATAOBJECT['CONFIG']['class_prefix']; - $table = substr($class,strlen($class_prefix)); + $table = $table ? $table : substr($class,strlen($class_prefix)); // only include the file if it exists - and barf badly if it has parse errors :) if (!empty($_DB_DATAOBJECT['CONFIG']['proxy']) || empty($_DB_DATAOBJECT['CONFIG']['class_location'])) { return false; } + // support for: + // class_location = mydir/ => maps to mydir/Tablename.php + // class_location = mydir/myfile_%s.php => maps to mydir/myfile_Tablename + // with directory sepr + // class_location = mydir/:mydir2/: => tries all of thes locations. + $cl = $_DB_DATAOBJECT['CONFIG']['class_location']; - if (strpos($_DB_DATAOBJECT['CONFIG']['class_location'],'%s') !== false) { - $file = sprintf($_DB_DATAOBJECT['CONFIG']['class_location'], preg_replace('/[^A-Z0-9]/i','_',ucfirst($table))); - } else { - $file = $_DB_DATAOBJECT['CONFIG']['class_location'].'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php"; + switch (true) { + case (strpos($cl ,'%s') !== false): + $file = sprintf($cl , preg_replace('/[^A-Z0-9]/i','_',ucfirst($table))); + break; + + case (strpos($cl , PATH_SEPARATOR) !== false): + $file = array(); + foreach(explode(PATH_SEPARATOR, $cl ) as $p) { + $file[] = $p .'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php"; + } + break; + default: + $file = $cl .'/'.preg_replace('/[^A-Z0-9]/i','_',ucfirst($table)).".php"; + break; } - if (!file_exists($file)) { + $cls = is_array($class) ? $class : array($class); + + if (is_array($file) || !file_exists($file)) { $found = false; - foreach(explode(PATH_SEPARATOR, ini_get('include_path')) as $p) { - if (file_exists("$p/$file")) { - $file = "$p/$file"; - $found = true; + + $file = is_array($file) ? $file : array($file); + $search = implode(PATH_SEPARATOR, $file); + foreach($file as $f) { + foreach(explode(PATH_SEPARATOR, '' . PATH_SEPARATOR . ini_get('include_path')) as $p) { + $ff = empty($p) ? $f : "$p/$f"; + + if (file_exists($ff)) { + $file = $ff; + $found = true; + break; + } + } + if ($found) { break; } } if (!$found) { DB_DataObject::raiseError( - "autoload:Could not find class {$class} using class_location value", + "autoload:Could not find class " . implode(',', $cls) . + " using class_location value :" . $search . + " using include_path value :" . ini_get('include_path'), DB_DATAOBJECT_ERROR_INVALIDCONFIG); return false; } @@ -2715,12 +2783,18 @@ class DB_DataObject extends DB_DataObject_Overload include_once $file; - - $ce = substr(phpversion(),0,1) > 4 ? class_exists($class,false) : class_exists($class); - + + $ce = false; + foreach($cls as $c) { + $ce = substr(phpversion(),0,1) > 4 ? class_exists($c,false) : class_exists($c); + if ($ce) { + $class = $c; + break; + } + } if (!$ce) { DB_DataObject::raiseError( - "autoload:Could not autoload {$class}", + "autoload:Could not autoload " . implode(',', $cls) , DB_DATAOBJECT_ERROR_INVALIDCONFIG); return false; } @@ -2786,7 +2860,7 @@ class DB_DataObject extends DB_DataObject_Overload } - + $_DB_DATAOBJECT['LINKS'][$this->_database] = array(); foreach ($schemas as $ini) { $links = @@ -2794,9 +2868,13 @@ class DB_DataObject extends DB_DataObject_Overload $_DB_DATAOBJECT['CONFIG']["links_{$this->_database}"] : str_replace('.ini','.links.ini',$ini); - if (empty($_DB_DATAOBJECT['LINKS'][$this->_database]) && file_exists($links) && is_file($links)) { + if (file_exists($links) && is_file($links)) { /* not sure why $links = ... here - TODO check if that works */ - $_DB_DATAOBJECT['LINKS'][$this->_database] = parse_ini_file($links, true); + $_DB_DATAOBJECT['LINKS'][$this->_database] = array_merge( + $_DB_DATAOBJECT['LINKS'][$this->_database], + parse_ini_file($links, true) + ); + if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loaded links.ini file: $links","links",1); } @@ -2977,14 +3055,12 @@ class DB_DataObject extends DB_DataObject_Overload } if ($link) { if ($obj->get($link, $this->$row)) { - $obj->free(); return $obj; } return false; } if ($obj->get($this->$row)) { - $obj->free(); return $obj; } return false; @@ -3315,14 +3391,23 @@ class DB_DataObject extends DB_DataObject_Overload DB_DATAOBJECT_ERROR_INVALIDCONFIG); return false; } + + $ignore_null = !isset($options['disable_null_strings']) + || !is_string($options['disable_null_strings']) + || strtolower($options['disable_null_strings']) !== 'full' ; + foreach($items as $k => $v) { - if (!isset($obj->$k)) { + if (!isset($obj->$k) && $ignore_null) { continue; } $kSql = ($quoteIdentifiers ? $DB->quoteIdentifier($k) : $k); + if (DB_DataObject::_is_null($obj,$k)) { + $obj->whereAdd("{$joinAs}.{$kSql} IS NULL"); + continue; + } if ($v & DB_DATAOBJECT_STR) { $obj->whereAdd("{$joinAs}.{$kSql} = " . $this->_quote((string) ( @@ -3344,14 +3429,9 @@ class DB_DataObject extends DB_DataObject_Overload if (PEAR::isError($value)) { $this->raiseError($value->getMessage() ,DB_DATAOBJECT_ERROR_INVALIDARG); return false; - } - if (!isset($options['disable_null_strings']) && strtolower($value) === 'null') { - $obj->whereAdd("{$joinAs}.{$kSql} IS NULL"); - continue; - } else { - $obj->whereAdd("{$joinAs}.{$kSql} = $value"); - continue; - } + } + $obj->whereAdd("{$joinAs}.{$kSql} = $value"); + continue; } @@ -3514,7 +3594,7 @@ class DB_DataObject extends DB_DataObject_Overload continue; } - if (!isset($from[sprintf($format,$k)])) { + if (!isset($from[sprintf($format,$k)]) && !DB_DataObject::_is_null($from, sprintf($format,$k))) { continue; } @@ -3643,7 +3723,7 @@ class DB_DataObject extends DB_DataObject_Overload // if not null - and it's not set....... - if (!isset($this->$key) && ($val & DB_DATAOBJECT_NOTNULL)) { + if ($val & DB_DATAOBJECT_NOTNULL && DB_DataObject::_is_null($this, $key)) { // dont check empty sequence key values.. if (($key == $seq[0]) && ($seq[1] == true)) { continue; @@ -3653,7 +3733,7 @@ class DB_DataObject extends DB_DataObject_Overload } - if (!isset($options['disable_null_strings']) && is_string($this->$key) && (strtolower($this->$key) == 'null')) { + if (DB_DataObject::_is_null($this, $key)) { if ($val & DB_DATAOBJECT_NOTNULL) { $this->debug("'null' field used for '$key', but it is defined as NOT NULL", 'VALIDATION', 4); $ret[$key] = false; @@ -3868,13 +3948,14 @@ class DB_DataObject extends DB_DataObject_Overload //echo "FROM VALUE $col, {$cols[$col]}, $value\n"; switch (true) { // set to null and column is can be null... - case (!isset($options['disable_null_strings']) && (strtolower($value) == 'null') && (!($cols[$col] & DB_DATAOBJECT_NOTNULL))): + case ((!($cols[$col] & DB_DATAOBJECT_NOTNULL)) && DB_DataObject::_is_null($value, false)): case (is_object($value) && is_a($value,'DB_DataObject_Cast')): $this->$col = $value; return true; // fail on setting null on a not null field.. - case (!isset($options['disable_null_strings']) && (strtolower($value) == 'null') && ($cols[$col] & DB_DATAOBJECT_NOTNULL)): + case (($cols[$col] & DB_DATAOBJECT_NOTNULL) && DB_DataObject::_is_null($value,false)): + return false; case (($cols[$col] & DB_DATAOBJECT_DATE) && ($cols[$col] & DB_DATAOBJECT_TIME)): @@ -4189,9 +4270,65 @@ class DB_DataObject extends DB_DataObject_Overload if (isset($_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5])) { $_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]->num_rows = array(); } + + if (is_array($this->_link_loaded)) { + foreach ($this->_link_loaded as $do) { + $do->free(); + } + } + } + /** + * Evaluate whether or not a value is set to null, taking the 'disable_null_strings' option into account. + * If the value is a string set to "null" and the "disable_null_strings" option is not set to + * true, then the value is considered to be null. + * If the value is actually a PHP NULL value, and "disable_null_strings" has been set to + * the value "full", then it will also be considered null. - this can not differenticate between not set + * + * + * @param object|array $obj_or_ar + * @param string|false $prop prperty + * @access private + * @return bool object + */ + function _is_null($obj_or_ar , $prop) + { + global $_DB_DATAOBJECT; + + + $isset = $prop === false ? isset($obj_or_ar) : + (is_array($obj_or_ar) ? isset($obj_or_ar[$prop]) : isset($obj_or_ar->$prop)); + + $value = $isset ? + ($prop === false ? $obj_or_ar : + (is_array($obj_or_ar) ? $obj_or_ar[$prop] : $obj_or_ar->$prop)) + : null; + + + + $options = $_DB_DATAOBJECT['CONFIG']; + + $null_strings = !isset($options['disable_null_strings']) + || $options['disable_null_strings'] === false; + + $crazy_null = isset($options['disable_null_strings']) + && is_string($options['disable_null_strings']) + && strtolower($options['disable_null_strings'] === 'full'); + + if ( $null_strings && $isset && is_string($value) && (strtolower($value) === 'null') ) { + return true; + } + + if ( $crazy_null && !$isset ) { + return true; + } + + return false; + + + } /* ---- LEGACY BC METHODS - NOT DOCUMENTED - See Documentation on New Methods. ---*/ @@ -4214,3 +4351,4 @@ if (!defined('DB_DATAOBJECT_NO_OVERLOAD')) { } } + diff --git a/extlib/DB/DataObject/Generator.php b/extlib/DB/DataObject/Generator.php index ff6e42c7db..17d310f57c 100644 --- a/extlib/DB/DataObject/Generator.php +++ b/extlib/DB/DataObject/Generator.php @@ -15,7 +15,7 @@ * @author Alan Knowles * @copyright 1997-2006 The PHP Group * @license http://www.php.net/license/3_01.txt PHP License 3.01 - * @version CVS: $Id: Generator.php 284150 2009-07-15 23:27:59Z alan_k $ + * @version CVS: $Id: Generator.php 289384 2009-10-09 00:17:26Z alan_k $ * @link http://pear.php.net/package/DB_DataObject */ @@ -33,7 +33,7 @@ /** * * Config _$ptions - * [DB_DataObject_Generator] + * [DB_DataObject] * ; optional default = DB/DataObject.php * extends_location = * ; optional default = DB_DataObject @@ -775,11 +775,9 @@ class DB_DataObject_Generator extends DB_DataObject //echo "Generating Class files: \n"; $options = &PEAR::getStaticProperty('DB_DataObject','options'); - - if ($extends = @$options['extends']) { - $this->_extends = $extends; - $this->_extendsFile = $options['extends_location']; - } + $this->_extends = empty($options['extends']) ? $this->_extends : $options['extends']; + $this->_extendsFile = empty($options['extends_location']) ? $this->_extendsFile : $options['extends_location']; + foreach($this->tables as $this->table) { $this->table = trim($this->table); @@ -814,7 +812,7 @@ class DB_DataObject_Generator extends DB_DataObject } /** - * class being extended (can be overridden by [DB_DataObject_Generator] extends=xxxx + * class being extended (can be overridden by [DB_DataObject] extends=xxxx * * @var string * @access private @@ -1142,10 +1140,9 @@ class DB_DataObject_Generator extends DB_DataObject $options = &PEAR::getStaticProperty('DB_DataObject','options'); $class_prefix = empty($options['class_prefix']) ? '' : $options['class_prefix']; - if ($extends = @$options['extends']) { - $this->_extends = $extends; - $this->_extendsFile = $options['extends_location']; - } + $this->_extends = empty($options['extends']) ? $this->_extends : $options['extends']; + $this->_extendsFile = empty($options['extends_location']) ? $this->_extendsFile : $options['extends_location']; + $classname = $this->classname = $this->getClassNameFromTableName($this->table); $out = $this->_generateClassTable(); From 0f1d0ab4d7d50467dd7d4ab0646f04da2735b720 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 15:43:11 -0500 Subject: [PATCH 59/70] add DB_DataObject for forward table --- classes/Forward.php | 45 +++++++++++++++++++++++++++++++++++++++++++ classes/statusnet.ini | 11 ++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 classes/Forward.php mode change 100644 => 100755 classes/statusnet.ini diff --git a/classes/Forward.php b/classes/Forward.php new file mode 100755 index 0000000000..61cec34e3d --- /dev/null +++ b/classes/Forward.php @@ -0,0 +1,45 @@ +. + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Table Definition for location_namespace + */ + +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Forward extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'forward'; // table name + public $profile_id; // int(4) primary_key not_null + public $notice_id; // int(4) primary_key not_null + public $created; // datetime not_null default_0000-00-00%2000%3A00%3A00 + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Forward',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE +} diff --git a/classes/statusnet.ini b/classes/statusnet.ini old mode 100644 new mode 100755 index 253f458798..a5126795bd --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -1,3 +1,4 @@ + [avatar] profile_id = 129 original = 17 @@ -195,6 +196,15 @@ id = K service = K uri = U +[forward] +profile_id = 129 +notice_id = 129 +created = 142 + +[forward__keys] +profile_id = K +notice_id = K + [group_alias] alias = 130 group_id = 129 @@ -260,7 +270,6 @@ modified = 384 [login_token__keys] user_id = K -token = K [message] id = 129 From 6bc6af667ec51e41570e580de43eac1f9e155d30 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 15:43:34 -0500 Subject: [PATCH 60/70] fix exe flag --- classes/Forward.php | 0 classes/statusnet.ini | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 classes/Forward.php mode change 100755 => 100644 classes/statusnet.ini diff --git a/classes/Forward.php b/classes/Forward.php old mode 100755 new mode 100644 diff --git a/classes/statusnet.ini b/classes/statusnet.ini old mode 100755 new mode 100644 From 72c82a2e293549c10b60ca9e295f2f430224e814 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 16:30:33 -0500 Subject: [PATCH 61/70] Basic function to store forwards and redistribute --- classes/Forward.php | 64 ++++++++++++++++++++++++++++++++++++++++ classes/Notice.php | 34 +-------------------- classes/Notice_inbox.php | 42 +++++++++++++++++++++++++- 3 files changed, 106 insertions(+), 34 deletions(-) diff --git a/classes/Forward.php b/classes/Forward.php index 61cec34e3d..6d4848438c 100644 --- a/classes/Forward.php +++ b/classes/Forward.php @@ -42,4 +42,68 @@ class Forward extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + + static function saveNew($profile_id, $notice_id) + { + $forward = new Forward(); + + $forward->profile_id = $profile_id; + $forward->notice_id = $notice_id; + $forward->created = common_sql_now(); + + $forward->query('BEGIN'); + + if (!$forward->insert()) { + throw new ServerException(_("Couldn't insert forward.")); + } + + $ni = $forward->addToInboxes(); + + $forward->query('COMMIT'); + + $forward->blowCache($ni); + } + + function addToInboxes() + { + $inbox = new Notice_inbox(); + + $user = new User(); + + $user->query('SELECT id FROM user JOIN subscription ON user.id = subscription.subscriber '. + 'WHERE subscription.subscribed = '.$this->profile_id); + + $ni = array(); + + while ($user->fetch()) { + $inbox = Notice_inbox::pkeyGet(array('user_id' => $user->id, + 'notice_id' => $this->notice_id)); + + if (empty($inbox)) { + $ni[$user->id] = NOTICE_INBOX_SOURCE_FORWARD; + } else { + $inbox->free(); + } + } + + $user->free(); + + Notice_inbox::bulkInsert($this->notice_id, $this->created, $ni); + + return $ni; + } + + function blowCache($ni) + { + $cache = common_memcache(); + + if (!empty($cache)) { + foreach ($ni as $id => $source) { + $cache->delete(common_cache_key('notice_inbox:by_user:'.$id)); + $cache->delete(common_cache_key('notice_inbox:by_user_own:'.$id)); + $cache->delete(common_cache_key('notice_inbox:by_user:'.$id.';last')); + $cache->delete(common_cache_key('notice_inbox:by_user_own:'.$id.';last')); + } + } + } } diff --git a/classes/Notice.php b/classes/Notice.php index 6610721564..bcd7947bd1 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -948,39 +948,7 @@ class Notice extends Memcached_DataObject } } - $cnt = 0; - - $qryhdr = 'INSERT INTO notice_inbox (user_id, notice_id, source, created) VALUES '; - $qry = $qryhdr; - - foreach ($ni as $id => $source) { - if ($cnt > 0) { - $qry .= ', '; - } - $qry .= '('.$id.', '.$this->id.', '.$source.", '".$this->created. "') "; - $cnt++; - if (rand() % NOTICE_INBOX_SOFT_LIMIT == 0) { - // FIXME: Causes lag in replicated servers - // Notice_inbox::gc($id); - } - if ($cnt >= MAX_BOXCARS) { - $inbox = new Notice_inbox(); - $result = $inbox->query($qry); - if (PEAR::isError($result)) { - common_log_db_error($inbox, $qry); - } - $qry = $qryhdr; - $cnt = 0; - } - } - - if ($cnt > 0) { - $inbox = new Notice_inbox(); - $result = $inbox->query($qry); - if (PEAR::isError($result)) { - common_log_db_error($inbox, $qry); - } - } + Notice_inbox::bulkInsert($this->id, $this->created, $ni); return; } diff --git a/classes/Notice_inbox.php b/classes/Notice_inbox.php index d3e7853b1b..b39006542c 100644 --- a/classes/Notice_inbox.php +++ b/classes/Notice_inbox.php @@ -32,6 +32,7 @@ define('NOTICE_INBOX_SOFT_LIMIT', 1000); define('NOTICE_INBOX_SOURCE_SUB', 1); define('NOTICE_INBOX_SOURCE_GROUP', 2); define('NOTICE_INBOX_SOURCE_REPLY', 3); +define('NOTICE_INBOX_SOURCE_FORWARD', 4); define('NOTICE_INBOX_SOURCE_GATEWAY', -1); class Notice_inbox extends Memcached_DataObject @@ -83,7 +84,7 @@ class Notice_inbox extends Memcached_DataObject $inbox->whereAdd('created > \'' . date('Y-m-d H:i:s', $since) . '\''); } - $inbox->orderBy('notice_id DESC'); + $inbox->orderBy('created DESC'); if (!is_null($offset)) { $inbox->limit($offset, $limit); @@ -141,4 +142,43 @@ class Notice_inbox extends Memcached_DataObject 'WHERE user_id = ' . $user_id . ' ' . 'AND notice_id in ('.implode(',', $notices).')'); } + + static function bulkInsert($notice_id, $created, $ni) + { + $cnt = 0; + + $qryhdr = 'INSERT INTO notice_inbox (user_id, notice_id, source, created) VALUES '; + $qry = $qryhdr; + + foreach ($ni as $id => $source) { + if ($cnt > 0) { + $qry .= ', '; + } + $qry .= '('.$id.', '.$notice_id.', '.$source.", '".$created. "') "; + $cnt++; + if (rand() % NOTICE_INBOX_SOFT_LIMIT == 0) { + // FIXME: Causes lag in replicated servers + // Notice_inbox::gc($id); + } + if ($cnt >= MAX_BOXCARS) { + $inbox = new Notice_inbox(); + $result = $inbox->query($qry); + if (PEAR::isError($result)) { + common_log_db_error($inbox, $qry); + } + $qry = $qryhdr; + $cnt = 0; + } + } + + if ($cnt > 0) { + $inbox = new Notice_inbox(); + $result = $inbox->query($qry); + if (PEAR::isError($result)) { + common_log_db_error($inbox, $qry); + } + } + + return; + } } From c899e4a84ee45b65950980ccb87e52129871d58e Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:02:48 -0500 Subject: [PATCH 62/70] show forwards in the inbox --- actions/all.php | 87 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/actions/all.php b/actions/all.php index 5a9d97dd76..2c96298faf 100644 --- a/actions/all.php +++ b/actions/all.php @@ -144,7 +144,7 @@ class AllAction extends ProfileAction function showContent() { - $nl = new NoticeList($this->notice, $this); + $nl = new InboxNoticeList($this->notice, $this->user, $this); $cnt = $nl->show(); @@ -167,5 +167,88 @@ class AllAction extends ProfileAction $this->element('h1', null, sprintf(_('%s and friends'), $this->user->nickname)); } } - +} + +class InboxNoticeList extends NoticeList +{ + var $owner = null; + + function __construct($notice, $owner, $out=null) + { + parent::__construct($notice, $out); + $this->owner = $owner; + } + + function newListItem($notice) + { + return new InboxNoticeListItem($notice, $this->owner, $this->out); + } +} + +class InboxNoticeListItem extends NoticeListItem +{ + var $owner = null; + var $ib = null; + + function __construct($notice, $owner, $out=null) + { + parent::__construct($notice, $out); + $this->owner = $owner; + + $this->ib = Notice_inbox::pkeyGet(array('user_id' => $owner->id, + 'notice_id' => $notice->id)); + } + + function showAuthor() + { + parent::showAuthor(); + if ($this->ib->source == NOTICE_INBOX_SOURCE_FORWARD) { + $this->out->element('span', 'forward', _('Fwd')); + } + } + + function showEnd() + { + if ($this->ib->source == NOTICE_INBOX_SOURCE_FORWARD) { + + $forward = new Forward(); + + // FIXME: scary join! + + $forward->query('SELECT profile_id '. + 'FROM forward JOIN subscription ON forward.profile_id = subscription.subscribed '. + 'WHERE subscription.subscriber = ' . $this->owner->id . ' '. + 'AND forward.notice_id = ' . $this->notice->id . ' '. + 'ORDER BY forward.created '); + + $n = 0; + + $firstForwarder = null; + + while ($forward->fetch()) { + if (empty($firstForwarder)) { + $firstForwarder = Profile::staticGet('id', $forward->profile_id); + } + $n++; + } + + $forward->free(); + unset($forward); + + $this->out->elementStart('span', 'forwards'); + + $link = XMLStringer::estring('a', array('href' => $firstForwarder->profileurl), + $firstForwarder->nickname); + + if ($n == 1) { + $this->out->raw(sprintf(_('Forwarded by %s'), $link)); + } else { + // XXX: use that cool ngettext thing + $this->out->raw(sprintf(_('Forwarded by %s and %d other(s)'), $link, $n - 1)); + } + + $this->out->elementEnd('span'); + } + parent::showEnd(); + } } From 7dd0f2fa9c8e9332c5ff481c93b53169c2510ff7 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:20:04 -0500 Subject: [PATCH 63/70] pkeyGet() method for Forward and return value from saveNew() --- classes/Forward.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/classes/Forward.php b/classes/Forward.php index 6d4848438c..52ec538715 100644 --- a/classes/Forward.php +++ b/classes/Forward.php @@ -43,6 +43,11 @@ class Forward extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + function &pkeyGet($kv) + { + return Memcached_DataObject::pkeyGet('Forward', $kv); + } + static function saveNew($profile_id, $notice_id) { $forward = new Forward(); @@ -62,6 +67,8 @@ class Forward extends Memcached_DataObject $forward->query('COMMIT'); $forward->blowCache($ni); + + return $forward; } function addToInboxes() From c49ece9fb40c68e6d6a47343208dc3da5726cf44 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:20:17 -0500 Subject: [PATCH 64/70] method to check if a profile has forwarded a notice --- classes/Profile.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/classes/Profile.php b/classes/Profile.php index 4b2e090064..4c14f62a06 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -716,4 +716,12 @@ class Profile extends Memcached_DataObject } return $result; } + + function hasForwarded($notice_id) + { + $forward = Forward::pkeyGet(array('profile_id' => $this->id, + 'notice_id' => $notice_id)); + + return (!empty($forward)); + } } From 48a93810abe5fd5098ef4f91e2b9d5991e217748 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:20:45 -0500 Subject: [PATCH 65/70] action to forward a notice --- actions/forward.php | 117 ++++++++++++++++++++++++++++++++++++++++++++ lib/router.php | 2 +- 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 actions/forward.php diff --git a/actions/forward.php b/actions/forward.php new file mode 100644 index 0000000000..87365c2d3c --- /dev/null +++ b/actions/forward.php @@ -0,0 +1,117 @@ + + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2008, 2009, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Forward action + * + * @category Action + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + */ + +class ForwardAction extends Action +{ + var $user = null; + var $notice = null; + + function prepare($args) + { + parent::prepare($args); + + $this->user = common_current_user(); + + if (empty($this->user)) { + $this->clientError(_("Only logged-in users can forward notices.")); + return false; + } + + $id = $this->trimmed('notice'); + + if (empty($id)) { + $this->clientError(_("No notice specified.")); + return false; + } + + $this->notice = Notice::staticGet('id', $id); + + if (empty($this->notice)) { + $this->clientError(_("No notice specified.")); + return false; + } + + $token = $this->trimmed('token'); + + if (empty($token) || $token != common_session_token()) { + $this->clientError(_("There was a problem with your session token. Try again, please.")); + return false; + } + + $profile = $this->user->getProfile(); + + if ($profile->hasForwarded($id)) { + $this->clientError(_("You already forwarded that notice.")); + return false; + } + + return true; + } + + /** + * Class handler. + * + * @param array $args query arguments + * + * @return void + */ + + function handle($args) + { + $forward = Forward::saveNew($this->user->id, $this->notice->id); + + if ($this->boolean('ajax')) { + $this->startHTML('text/xml;charset=utf-8'); + $this->elementStart('head'); + $this->element('title', null, _('Forwarded')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->element('p', array('id' => 'forward_response'), _('Forwarded!')); + $this->elementEnd('body'); + $this->elementEnd('html'); + } else { + // FIXME! + } + } +} diff --git a/lib/router.php b/lib/router.php index 37525319f7..398135a3e2 100644 --- a/lib/router.php +++ b/lib/router.php @@ -99,7 +99,7 @@ class Router 'groupblock', 'groupunblock', 'sandbox', 'unsandbox', 'silence', 'unsilence', - 'deleteuser'); + 'deleteuser', 'forward'); foreach ($main as $a) { $m->connect('main/'.$a, array('action' => $a)); From 41cbb90faeabc0a6002b41d40d392f45a59a7aba Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:31:23 -0500 Subject: [PATCH 66/70] add (ugly) form to forward notices --- actions/forward.php | 2 +- js/util.js | 10 ++- lib/forwardform.php | 147 ++++++++++++++++++++++++++++++++++++++++++++ lib/noticelist.php | 21 +++++++ 4 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 lib/forwardform.php diff --git a/actions/forward.php b/actions/forward.php index 87365c2d3c..867ed97d29 100644 --- a/actions/forward.php +++ b/actions/forward.php @@ -72,7 +72,7 @@ class ForwardAction extends Action return false; } - $token = $this->trimmed('token'); + $token = $this->trimmed('token-'.$id); if (empty($token) || $token != common_session_token()) { $this->clientError(_("There was a problem with your session token. Try again, please.")); diff --git a/js/util.js b/js/util.js index ed6a781f74..67df73507b 100644 --- a/js/util.js +++ b/js/util.js @@ -208,7 +208,7 @@ var SN = { // StatusNet $('#'+form_id+' .form_response').remove(); var result; if ($('#'+SN.C.S.Error, data).length > 0) { - result = document._importNode($('p', data)[0], true); + result = document._importNode($('p', data)[0], true); result = result.textContent || result.innerHTML; form.append('

    '+result+'

    '); } @@ -306,8 +306,12 @@ var SN = { // StatusNet $('.form_disfavor').each(function() { SN.U.FormXHR($(this)); }); }, + NoticeForward: function() { + $('.form_forward').each(function() { SN.U.FormXHR($(this)); }); + }, + NoticeAttachments: function() { - $('.notice a.attachment').each(function() { + $('.notice a.attachment').each(function() { SN.U.NoticeWithAttachment($(this).closest('.notice')); }); }, @@ -439,7 +443,7 @@ var SN = { // StatusNet Notices: function() { if ($('body.user_in').length > 0) { SN.U.NoticeFavor(); - + SN.U.NoticeForward(); SN.U.NoticeReply(); } diff --git a/lib/forwardform.php b/lib/forwardform.php new file mode 100644 index 0000000000..2052856ae6 --- /dev/null +++ b/lib/forwardform.php @@ -0,0 +1,147 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +require_once INSTALLDIR.'/lib/form.php'; + +/** + * Form for forwarding a notice + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class ForwardForm extends Form +{ + /** + * Notice to forward + */ + + var $notice = null; + + /** + * Constructor + * + * @param HTMLOutputter $out output channel + * @param Notice $notice notice to forward + */ + + function __construct($out=null, $notice=null) + { + parent::__construct($out); + + $this->notice = $notice; + } + + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'forward-' . $this->notice->id; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('forward'); + } + + /** + * Include a session token for CSRF protection + * + * @return void + */ + + function sessionToken() + { + $this->out->hidden('token-' . $this->notice->id, + common_session_token()); + } + + /** + * Legend of the Form + * + * @return void + */ + function formLegend() + { + $this->out->element('legend', null, _('Forward this notice')); + } + + /** + * Data elements + * + * @return void + */ + + function formData() + { + $this->out->hidden('notice-n'.$this->notice->id, + $this->notice->id, + 'notice'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('forward-submit-' . $this->notice->id, + _('Forward'), 'submit', null, _('Forward this notice')); + } + + /** + * Class of the form. + * + * @return string the form's class + */ + + function formClass() + { + return 'form_forward'; + } +} diff --git a/lib/noticelist.php b/lib/noticelist.php index 21cec528ff..b38860880d 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -212,6 +212,7 @@ class NoticeListItem extends Widget $this->out->elementStart('div', 'notice-options'); $this->showFaveForm(); $this->showReplyLink(); + $this->showForwardForm(); $this->showDeleteLink(); $this->out->elementEnd('div'); } @@ -530,6 +531,26 @@ class NoticeListItem extends Widget } } + /** + * show the form to forward a notice + * + * @return void + */ + + function showForwardForm() + { + $user = common_current_user(); + if ($user) { + $profile = $user->getProfile(); + if ($profile->hasForwarded($this->notice->id)) { + $this->out->text(_('Forwarded')); + } else { + $ff = new ForwardForm($this->out, $this->notice); + $ff->show(); + } + } + } + /** * if the user is the author, let them delete the notice * From 5344b3fb4bd48e0559e5ff37b961878ae3a31d3b Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:32:09 -0500 Subject: [PATCH 67/70] add forward table to updates --- db/08to09.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/db/08to09.sql b/db/08to09.sql index 64640f4ced..a945416ea4 100644 --- a/db/08to09.sql +++ b/db/08to09.sql @@ -82,3 +82,15 @@ create table login_token ( constraint primary key (user_id) ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + +create table forward ( + + profile_id integer not null comment 'profile who forwarded the notice' references profile (id), + notice_id integer not null comment 'notice they forwarded' references notice (id), + + created datetime not null comment 'date this record was created', + + constraint primary key (profile_id, notice_id) + +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + From 9dff9e6cea6c46734de85081856064561a34a501 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:42:07 -0500 Subject: [PATCH 68/70] make sure not to forward blocked users --- classes/Forward.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/classes/Forward.php b/classes/Forward.php index 52ec538715..e9b83a58bf 100644 --- a/classes/Forward.php +++ b/classes/Forward.php @@ -77,23 +77,33 @@ class Forward extends Memcached_DataObject $user = new User(); - $user->query('SELECT id FROM user JOIN subscription ON user.id = subscription.subscriber '. + $user->query('SELECT user.* FROM user JOIN subscription ON user.id = subscription.subscriber '. 'WHERE subscription.subscribed = '.$this->profile_id); $ni = array(); + $notice = Notice::staticGet('id', $this->notice_id); + + $author = Profile::staticGet('id', $notice->profile_id); + while ($user->fetch()) { $inbox = Notice_inbox::pkeyGet(array('user_id' => $user->id, 'notice_id' => $this->notice_id)); if (empty($inbox)) { - $ni[$user->id] = NOTICE_INBOX_SOURCE_FORWARD; + if (!$user->hasBlocked($author)) { + $ni[$user->id] = NOTICE_INBOX_SOURCE_FORWARD; + } } else { $inbox->free(); } } $user->free(); + $author->free(); + + unset($user); + unset($author); Notice_inbox::bulkInsert($this->notice_id, $this->created, $ni); From 985d6a0de424b682ebe7f3f90a504ba3e70f2f61 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:48:24 -0500 Subject: [PATCH 69/70] make forward form slightly less obnoxious --- theme/base/css/display.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 44d1d0300f..f622f35caf 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -112,7 +112,6 @@ border-style:solid; line-height:0; } - .form_settings input.remove { margin-left:11px; } @@ -246,7 +245,6 @@ margin-left:11px; width:auto; } - address { float:left; margin-bottom:18px; @@ -709,7 +707,6 @@ border-radius:4px; margin-bottom:18px; } - .entity_send-a-message button { position:absolute; top:3px; @@ -1005,11 +1002,13 @@ float:left; } .notice-options .notice_delete, .notice-options .notice_reply, +.notice-options .form_forward, .notice-options .form_favor, .notice-options .form_disfavor { float:left; margin-left:20%; } +.notice-options .form_forward, .notice-options .form_favor, .notice-options .form_disfavor { margin-left:0; @@ -1035,10 +1034,12 @@ border-radius:0; -moz-border-radius:0; -webkit-border-radius:0; } +.notice-options .form_forward legend, .notice-options .form_favor legend, .notice-options .form_disfavor legend { display:none; } +.notice-options .form_forward fieldset, .notice-options .form_favor fieldset, .notice-options .form_disfavor fieldset { border:0; From 21757186e9a7ffd2e3330fd4ef61ffeb2dc0229b Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 8 Dec 2009 17:52:20 -0500 Subject: [PATCH 70/70] don't allow forwarding your own notice --- actions/forward.php | 5 +++++ lib/noticelist.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/actions/forward.php b/actions/forward.php index 867ed97d29..194833fe0c 100644 --- a/actions/forward.php +++ b/actions/forward.php @@ -72,6 +72,11 @@ class ForwardAction extends Action return false; } + if ($this->user->id == $this->notice->profile_id) { + $this->clientError(_("You can't forward your own notice.")); + return false; + } + $token = $this->trimmed('token-'.$id); if (empty($token) || $token != common_session_token()) { diff --git a/lib/noticelist.php b/lib/noticelist.php index b38860880d..d6ffc9ca9c 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -540,7 +540,7 @@ class NoticeListItem extends Widget function showForwardForm() { $user = common_current_user(); - if ($user) { + if ($user && $user->id != $this->notice->profile_id) { $profile = $user->getProfile(); if ($profile->hasForwarded($this->notice->id)) { $this->out->text(_('Forwarded'));