]> git.wh0rd.org - tt-rss.git/commitdiff
Merge pull request #211 from PerryWerneck/master
authorAndrew Dolgov <fox+ttrss@fakecake.org>
Wed, 29 May 2013 17:42:12 +0000 (10:42 -0700)
committerAndrew Dolgov <fox+ttrss@fakecake.org>
Wed, 29 May 2013 17:42:12 +0000 (10:42 -0700)
Updatings pt-BR translation

45 files changed:
.gitignore
atom-to-html.xsl
cdm.css [deleted file]
classes/article.php
classes/db/prefs.php
classes/feeditem/atom.php
classes/feeditem/rss.php
classes/feedparser.php
classes/handler/public.php
classes/opml.php
classes/pluginhost.php
classes/pref/prefs.php
classes/pref/users.php
config.php-dist
css/cdm.css [new file with mode: 0644]
css/layout.css [new file with mode: 0644]
css/prefs.css [new file with mode: 0644]
css/tt-rss.css [new file with mode: 0644]
css/utility.css [new file with mode: 0644]
include/colors.php
include/digest.php
include/functions.php
include/login_form.php
include/rssfuncs.php
include/sanity_check.php
index.php
install/index.php
js/viewfeed.js
lib/floIcon.php [deleted file]
locale/fr_FR/LC_MESSAGES/messages.mo
locale/fr_FR/LC_MESSAGES/messages.po
locale/sv_SE/LC_MESSAGES/messages.mo
locale/sv_SE/LC_MESSAGES/messages.po
plugins/auth_internal/init.php
plugins/googlereaderkeys/init.php
prefs.css [deleted file]
prefs.php
register.php
schema/ttrss_schema_mysql.sql
schema/ttrss_schema_pgsql.sql
themes/default.css
tt-rss.css [deleted file]
update.php
update_daemon2.php
utility.css [deleted file]

index b4853806cf7ebe3780d9808cb60f1618e7023a78..ac3c24319c24a9f4975ff0fc63d94e0334fb7c6c 100644 (file)
@@ -2,6 +2,7 @@
 *~
 *.DS_Store
 #*
+lib/floIcon.php
 .idea/*
 config.php
 feed-icons/*
index 097b07f55840586d0e70d6c1040264afac2a14c4..e1042648c6f47434e8796cf5c25565ef853d3db9 100644 (file)
@@ -9,7 +9,7 @@
 <html>
        <head>
                <title><xsl:value-of select="atom:title"/></title>
-               <link rel="stylesheet" type="text/css" href="utility.css"/>
+               <link rel="stylesheet" type="text/css" href="css/utility.css"/>
                <script language="javascript" src="lib/xsl_mop-up.js"></script>
        </head>
 
diff --git a/cdm.css b/cdm.css
deleted file mode 100644 (file)
index 4adc8f3..0000000
--- a/cdm.css
+++ /dev/null
@@ -1,213 +0,0 @@
-div.cdmHeader img, div.cdmHeader input, div.cdmFooter img {
-       vertical-align : middle;
-}
-
-div.cdmHeader {
-       display : table;
-}
-
-div.cdmHeader > * {
-       display : table-cell;
-       padding : 5px;
-}
-
-div.cdmHeader > div {
-       white-space : nowrap;
-}
-
-div.cdmHeader > span {
-       width : 100%;
-}
-
-div.cdmHeader span.updated {
-       color : #555;
-       font-weight : normal;
-       font-size : 11px;
-       white-space : nowrap;
-       vertical-align : middle;
-}
-
-div.cdmHeader input {
-       margin-right : 5px;
-}
-
-div.cdmHeader div.updPic {
-       width : 25px;
-       display : inline-block;
-       text-align : center;
-}
-
-div.cdmHeader div.updPic img {
-       vertical-align : middle;
-}
-
-div.cdmHeader img, div.cdmFooter img {
-       margin : 0px 2px 0px 2px;
-}
-
-div.cdmContentInner {
-       margin : 10px;
-       line-height : 20px;
-}
-
-div.cdmContentInner img {
-       border-width : 0px;
-       max-width : 98%;
-       height : auto;
-}
-
-div.cdmFooter {
-       padding : 5px;
-       font-weight : normal;
-       color : #555;
-       clear : both;
-}
-
-div.cdm.expanded {
-       margin-top : 4px;
-       margin-bottom : 4px;
-}
-
-div.cdm.expandable {
-       background-color : #f0f0f0;
-       border-width : 0px 0px 1px 0px;
-       border-color : #c0c0c0;
-       border-style : solid;
-}
-
-div.cdm.expandable.active {
-       box-shadow : inset 0px 0px 3px 0px rgba(0,0,0,0.1);
-}
-
-div.cdm.expandable > hr {
-       display : none;
-}
-
-div.cdm.expanded > hr {
-       margin-top : 0px;
-       margin-bottom : 0px;
-}
-
-div.cdm.expandable.Unread {
-       background : white;
-}
-
-div.cdm.expandable.active {
-       border-color : #88b0f0;
-       background : white ! important;
-}
-
-div.cdm.expandable div.cdmHeader a.title {
-       font-weight : bold;
-       color : #555;
-}
-
-div.cdm.expandable.Unread div.cdmHeader a.title {
-       color : black;
-}
-
-div.cdm.expandable.active div.cdmHeader a.title {
-       color : #4684ff;
-}
-
-div.cdm.expanded div.cdmHeader {
-       background : transparent ! important;
-}
-
-div.cdm.expanded div.cdmHeader a.title {
-       font-size : 14px;
-       color : #999;
-       font-weight : bold;
-}
-
-
-div.cdm.expanded.active div.cdmHeader a.title {
-       color : #4684ff;
-}
-
-div.cdm.expanded.Unread div.cdmHeader a.title {
-       color : black;
-}
-
-div.cdm.expanded div.cdmContent {
-       color : #555;
-}
-
-div.cdm.expanded.Unread div.cdmContent {
-       color : black;
-}
-
-div.cdm.active div.cdmContent {
-       color : black;
-}
-
-span.cdmExcerpt {
-       font-size : 11px;
-       color : #555;
-       font-weight : normal;
-       cursor : pointer;
-}
-
-div.cdmContent div.postEnclosures {
-       margin-top : 1em;
-       color : #555;
-}
-
-div.cdmFeedTitle {
-       border-color : #a0a0a0;
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       padding : 5px 3px 5px 5px;
-       background : url("images/toolbar.png") bottom left;
-       background-repeat : repeat-x;
-}
-
-div.cdmFeedTitle a.title {
-       color : #555;
-       font-style : italic;
-       font-weight : bold;
-}
-
-div.cdmFeedTitle a {
-       color : #555;
-}
-
-div.cdmFeedTitle a:hover {
-       color : #4684ff;
-}
-
-div.cdmHeader span.hlFeed {
-       float : right;
-       font-weight : normal;
-       font-style : italic;
-}
-
-div.cdmHeader div.hlFeed, div.cdmHeader div.hlFeed a {
-       vertical-align : middle;
-       color : #555;
-       font-weight : normal;
-       font-style : italic;
-       font-size : 11px;
-}
-
-div.cdm .hlFeed a {
-       border-radius : 4px;
-       display : inline-block;
-       padding : 1px 4px 1px 4px;
-}
-
-div.cdmContentInner p {
-       max-width : 650px;
-}
-
-div.cdmContentInner iframe {
-       min-width : 50%;
-}
-
-div.cdmHeader span.author {
-       color : #555;
-       font-size : 11px;
-       font-weight : normal;
-}
-
-
index e9f86f2984d6a709fe5cf8aeb0c4caebd0018eec..398132d1200b5b1f412f0e9dcdb8cf2984a7bcae 100644 (file)
@@ -44,7 +44,7 @@ class Article extends Handler_Protected {
                } else if ($mode == "raw") {
                        if ($_REQUEST['html']) {
                                header("Content-Type: text/html");
-                               print '<link rel="stylesheet" type="text/css" href="tt-rss.css"/>';
+                               print '<link rel="stylesheet" type="text/css" href="css/tt-rss.css"/>';
                        }
 
                        $article = format_article($id, false);
index 26fb4666bae468cfa977c73eec81792222d976ab..3e92bb89b59073766e61eadf28dac6af0d3826e8 100644 (file)
@@ -105,7 +105,7 @@ class Db_Prefs {
                        return $this->convert($value, $type_name);
 
                } else {
-                       user_error("Fatal error, unknown preferences key: $pref_name", $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+                       user_error("Fatal error, unknown preferences key: $pref_name (owner: $user_id)", $die_on_error ? E_USER_ERROR : E_USER_WARNING);
                        return null;
                }
        }
index 1cfa4bcc5829718a644078170d32608f8e4152f9..489c5b148e62f14f00de571492f93e5425f54acd 100644 (file)
@@ -22,8 +22,11 @@ class FeedItem_Atom extends FeedItem_Common {
                $links = $this->elem->getElementsByTagName("link");
 
                foreach ($links as $link) {
-                       if ($link && $link->hasAttribute("href") && (!$link->hasAttribute("rel")
-                                       || $link->getAttribute("rel") == "alternate")) {
+                       if ($link && $link->hasAttribute("href") &&
+                               (!$link->hasAttribute("rel")
+                                       || $link->getAttribute("rel") == "alternate"
+                                       || $link->getAttribute("rel") == "standout")) {
+
                                return $link->getAttribute("href");
                        }
                }
@@ -41,9 +44,8 @@ class FeedItem_Atom extends FeedItem_Common {
                $content = $this->elem->getElementsByTagName("content")->item(0);
 
                if ($content) {
-                       if ($content->hasChildNodes()) {
-
-                               if ($content->getElementsByTagName("*")->length > 1) {
+                       if ($content->hasAttribute('type')) {
+                               if ($content->getAttribute('type') == 'xhtml') {
                                        return $this->doc->saveXML($content->firstChild->nextSibling);
                                }
                        }
@@ -53,11 +55,18 @@ class FeedItem_Atom extends FeedItem_Common {
        }
 
        function get_description() {
-               $summary = $this->elem->getElementsByTagName("summary")->item(0);
+               $content = $this->elem->getElementsByTagName("summary")->item(0);
 
-               if ($summary) {
-                       return $summary->nodeValue;
+               if ($content) {
+                       if ($content->hasAttribute('type')) {
+                               if ($content->getAttribute('type') == 'xhtml') {
+                                       return $this->doc->saveXML($content->firstChild->nextSibling);
+                               }
+                       }
+
+                       return $content->nodeValue;
                }
+
        }
 
        function get_categories() {
index 2f363b4f69d343ef98936a830702b0f7c88eca5b..e09a1fbba245e08d155e20994da4772d4453d7cd 100644 (file)
@@ -19,6 +19,24 @@ class FeedItem_RSS extends FeedItem_Common {
        }
 
        function get_link() {
+               $links = $this->xpath->query("atom:link", $this->elem);
+
+               foreach ($links as $link) {
+                       if ($link && $link->hasAttribute("href") &&
+                               (!$link->hasAttribute("rel")
+                                       || $link->getAttribute("rel") == "alternate"
+                                       || $link->getAttribute("rel") == "standout")) {
+
+                               return $link->getAttribute("href");
+                       }
+               }
+
+               $link = $this->elem->getElementsByTagName("guid")->item(0);
+
+               if ($link && $link->hasAttributes() && $link->getAttribute("isPermaLink") == "true") {
+                       return $link->nodeValue;
+               }
+
                $link = $this->elem->getElementsByTagName("link")->item(0);
 
                if ($link) {
index bd67ca39d9e7730e3390185e08ee19dffe490bc4..d93c575b21edbae9931d214eff4eacd3f2aeeaa8 100644 (file)
@@ -17,7 +17,22 @@ class FeedParser {
                libxml_clear_errors();
                $this->doc = new DOMDocument();
                $this->doc->loadXML($data);
-               $this->error = $this->format_error(libxml_get_last_error());
+
+               $error = libxml_get_last_error();
+
+               if ($error && $error->code == 9) {
+                       libxml_clear_errors();
+
+                       // we might want to try guessing input encoding here too
+                       $data = iconv("UTF-8", "UTF-8//IGNORE", $data);
+
+                       $this->doc = new DOMDocument();
+                       $this->doc->loadXML($data);
+
+                       $error = libxml_get_last_error();
+               }
+
+               $this->error = $this->format_error($error);
                libxml_clear_errors();
 
                $this->items = array();
@@ -90,7 +105,6 @@ class FeedParser {
 
                                break;
                        case $this::FEED_RSS:
-
                                $title = $xpath->query("//channel/title")->item(0);
 
                                if ($title) {
@@ -99,8 +113,11 @@ class FeedParser {
 
                                $link = $xpath->query("//channel/link")->item(0);
 
-                               if ($link && $link->hasAttributes()) {
-                                       $this->link = $link->getAttribute("href");
+                               if ($link) {
+                                       if ($link->getAttribute("href"))
+                                               $this->link = $link->getAttribute("href");
+                                       else if ($link->nodeValue)
+                                               $this->link = $link->nodeValue;
                                }
 
                                $articles = $xpath->query("//channel/item");
@@ -182,7 +199,8 @@ class FeedParser {
                        }
                        break;
                case $this::FEED_RSS:
-                       $links = $this->xpath->query("//channel/link");
+                       $links = $this->xpath->query("//atom:link");
+
                        foreach ($links as $link) {
                                if (!$rel || $link->hasAttribute('rel') && $link->getAttribute('rel') == $rel) {
                                        array_push($rv, $link->getAttribute('href'));
index 7fa74410763a6b3d7438e5eb903cd5ff1683e926..727976a82ed73125cdfe13380de3f2fa6014be3a 100644 (file)
@@ -382,7 +382,7 @@ class Handler_Public extends Handler {
                header('Content-Type: text/html; charset=utf-8');
                print "<html><head><title>Tiny Tiny RSS</title>";
 
-               stylesheet_tag("utility.css");
+               stylesheet_tag("css/utility.css");
                javascript_tag("lib/prototype.js");
                javascript_tag("lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls");
                print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
@@ -553,7 +553,7 @@ class Handler_Public extends Handler {
                        print "<html>
                                <head>
                                        <title>Tiny Tiny RSS</title>
-                                       <link rel=\"stylesheet\" type=\"text/css\" href=\"utility.css\">
+                                       <link rel=\"stylesheet\" type=\"text/css\" href=\"css/utility.css\">
                                        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
                                </head>
                                <body>
@@ -732,10 +732,12 @@ class Handler_Public extends Handler {
        }
 
        function forgotpass() {
+               startup_gettext();
+
                header('Content-Type: text/html; charset=utf-8');
                print "<html><head><title>Tiny Tiny RSS</title>";
 
-               stylesheet_tag("utility.css");
+               stylesheet_tag("css/utility.css");
                javascript_tag("lib/prototype.js");
 
                print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
@@ -825,6 +827,8 @@ class Handler_Public extends Handler {
        }
 
        function dbupdate() {
+               startup_gettext();
+
                if (!SINGLE_USER_MODE && $_SESSION["access_level"] < 10) {
                        $_SESSION["login_error_msg"] = __("Your access level is insufficient to run this script.");
                        render_login_form();
@@ -835,7 +839,7 @@ class Handler_Public extends Handler {
                        <head>
                        <title>Database Updater</title>
                        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-                       <link rel="stylesheet" type="text/css" href="utility.css"/>
+                       <link rel="stylesheet" type="text/css" href="css/utility.css"/>
                        </head>
                        <style type="text/css">
                                span.ok { color : #009000; font-weight : bold; }
index 3f4030dea190e62bed68b14cbec0fae441ed1071..b37b72c21e43bf02c12032e1b148f8b0749b12cf 100644 (file)
@@ -24,7 +24,7 @@ class Opml extends Handler_Protected {
 
                print "<html>
                        <head>
-                               <link rel=\"stylesheet\" href=\"utility.css\" type=\"text/css\">
+                               <link rel=\"stylesheet\" href=\"css/utility.css\" type=\"text/css\">
                                <title>".__("OPML Utility")."</title>
                                <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
                        </head>
index bc5dc96beb5c0ca4cc47e40aa9bbe46d0b1317fe..53adf01f9ff8b098c32602c474c732ee37eb0061 100644 (file)
@@ -36,6 +36,7 @@ class PluginHost {
        const HOOK_ARTICLE_LEFT_BUTTON = 19;
        const HOOK_PREFS_EDIT_FEED = 20;
        const HOOK_PREFS_SAVE_FEED = 21;
+       const HOOK_FETCH_FEED = 22;
 
        const KIND_ALL = 1;
        const KIND_SYSTEM = 2;
@@ -273,7 +274,8 @@ class PluginHost {
                        if (!isset($this->storage[$plugin]))
                                $this->storage[$plugin] = array();
 
-                       $content = $this->dbh->escape_string(serialize($this->storage[$plugin]));
+                       $content = $this->dbh->escape_string(serialize($this->storage[$plugin]),
+                               false);
 
                        if ($this->dbh->num_rows($result) != 0) {
                                $this->dbh->query("UPDATE ttrss_plugin_storage SET content = '$content'
index 425d4b0ac09ab1d1284ef4d244f40106fb8eceeb..32071e3b31680ff00a89b215650babb7467d6cd8 100644 (file)
@@ -40,7 +40,7 @@ class Pref_Prefs extends Handler_Protected {
                        "FRESH_ARTICLE_MAX_AGE" => array(__("Maximum age of fresh articles (in hours)"), ""),
                        "HIDE_READ_FEEDS" => array(__("Hide feeds with no unread articles"), ""),
                        "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds when hiding read feeds"), ""),
-                       "LONG_DATE_FORMAT" => array(__("Long date format"), ""),
+                       "LONG_DATE_FORMAT" => array(__("Long date format"), __("The syntax used is identical to the PHP <a href='http://php.net/manual/function.date.php'>date()</a> function.")),
                        "ON_CATCHUP_SHOW_NEXT_FEED" => array(__("On catchup show next feed"), __("Automatically open next feed with unread articles after marking one as read")),
                        "PURGE_OLD_DAYS" => array(__("Purge articles after this number of days (0 - disables)"), ""),
                        "PURGE_UNREAD_ARTICLES" => array(__("Purge unread articles"), ""),
@@ -962,7 +962,7 @@ class Pref_Prefs extends Handler_Protected {
 
                $value = str_replace("<br/>", "\n", $value);
 
-               print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "tt-rss.css"));
+               print_notice(T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "css/tt-rss.css"));
 
                print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
                print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"setpref\">";
index 60059dc8df30353710eba3628244e42b42b202b1..914491e4ab64e14d822d9339e4536f5e4d5417b6 100644 (file)
@@ -355,6 +355,9 @@ class Pref_Users extends Handler_Protected {
                                <button dojoType=\"dijit.form.Button\" onclick=\"javascript:resetSelectedUserPass()\">".
                                __('Reset password')."</button dojoType=\"dijit.form.Button\">";
 
+                       PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION,
+                               "hook_prefs_tab_section", "prefUsersToolbar");
+
                        print "</div>"; #toolbar
                        print "</div>"; #pane
                        print "<div id=\"pref-user-content\" dojoType=\"dijit.layout.ContentPane\" region=\"center\">";
index 58218bab1519dc80a2b966915db2475a68c99add..1eb4a13e40abf1caa9a5ee324fab4b3aaa3c8470 100644 (file)
        // *****************************
 
        define('PHP_EXECUTABLE', '/usr/bin/php');
-       // Path to PHP executable, used for various command-line tt-rss programs
+       // Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss programs and
+       // update daemon. Do not try to use CGI binary here, it won't work. If you see HTTP headers
+       // being displayed while running tt-rss scripts, then most probably you are using the CGI
+       // binary. If you are unsure what to put in here, ask your hosting provider.
 
        define('LOCK_DIRECTORY', 'lock');
        // Directory for lockfiles, must be writable to the user you run
        define('SPHINX_SERVER', 'localhost:9312');
        // Hostname:port combination for the Sphinx server.
 
-       define('SPHINX_INDEX', 'ttrss');
+       define('SPHINX_INDEX', 'ttrss, delta');
        // Index name in Sphinx configuration. You can specify multiple indexes
        // as a comma-separated string.
+       // Example configuration files are available on tt-rss wiki.
 
        // ***********************************
        // *** Self-registrations by users ***
diff --git a/css/cdm.css b/css/cdm.css
new file mode 100644 (file)
index 0000000..900c837
--- /dev/null
@@ -0,0 +1,217 @@
+div.cdmHeader img, div.cdmHeader input, div.cdmFooter img {
+       vertical-align : middle;
+}
+
+div.cdmHeader {
+       display : table;
+}
+
+div.cdmHeader > * {
+       display : table-cell;
+       padding : 5px;
+}
+
+div.cdmHeader > div {
+       white-space : nowrap;
+}
+
+div.cdmHeader > span {
+       width : 100%;
+}
+
+div.cdmHeader span.updated {
+       color : #555;
+       font-weight : normal;
+       font-size : 11px;
+       white-space : nowrap;
+       vertical-align : middle;
+}
+
+div.cdmHeader input {
+       margin-right : 5px;
+}
+
+div.cdmHeader div.updPic {
+       width : 25px;
+       display : inline-block;
+       text-align : center;
+}
+
+div.cdmHeader div.updPic img {
+       vertical-align : middle;
+}
+
+div.cdmHeader img, div.cdmFooter img {
+       margin : 0px 2px 0px 2px;
+}
+
+div.cdmContentInner {
+       margin : 10px;
+       line-height : 20px;
+}
+
+div.cdmContentInner img {
+       border-width : 0px;
+       max-width : 98%;
+       height : auto;
+}
+
+div.cdmFooter {
+       padding : 5px;
+       font-weight : normal;
+       color : #555;
+       clear : both;
+}
+
+div.cdm.expanded {
+       margin-top : 4px;
+       margin-bottom : 4px;
+}
+
+div.cdm.expandable {
+       background-color : #f0f0f0;
+       border-width : 0px 0px 1px 0px;
+       border-color : #c0c0c0;
+       border-style : solid;
+}
+
+div.cdm.expandable > hr {
+       display : none;
+}
+
+div.cdm.expanded > hr {
+       margin-top : 0px;
+       margin-bottom : 0px;
+}
+
+div.cdm.expandable.Unread {
+       background : white;
+}
+
+div.cdm.expandable.Selected {
+       background : #f9fbff;
+}
+
+div.cdm.expandable.active {
+       box-shadow : inset 0px 0px 3px 0px rgba(0,0,0,0.1);
+       border-color : #88b0f0;
+       background : white ! important;
+}
+
+div.cdm.expandable div.cdmHeader a.title {
+       font-weight : bold;
+       color : #555;
+}
+
+div.cdm.expandable.Unread div.cdmHeader a.title {
+       color : black;
+}
+
+div.cdm.expandable.active div.cdmHeader a.title {
+       color : #4684ff;
+}
+
+div.cdm.expanded div.cdmHeader {
+       background : transparent ! important;
+}
+
+div.cdm.expanded div.cdmHeader a.title {
+       font-size : 14px;
+       color : #999;
+       font-weight : bold;
+}
+
+div.cdm.expanded.active {
+       background : white;
+}
+
+div.cdm.expanded.active div.cdmHeader a.title {
+       color : #4684ff;
+}
+
+div.cdm.expanded.Unread div.cdmHeader a.title {
+       color : black;
+}
+
+div.cdm.expanded div.cdmContent {
+       color : #555;
+}
+
+div.cdm.expanded.Unread div.cdmContent {
+       color : black;
+}
+
+div.cdm.active div.cdmContent {
+       color : black;
+}
+
+span.cdmExcerpt {
+       font-size : 11px;
+       color : #555;
+       font-weight : normal;
+       cursor : pointer;
+}
+
+div.cdmContent div.postEnclosures {
+       margin-top : 1em;
+       color : #555;
+}
+
+div.cdmFeedTitle {
+       border-color : #a0a0a0;
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       padding : 5px 3px 5px 5px;
+       background : url("images/toolbar.png") bottom left;
+       background-repeat : repeat-x;
+}
+
+div.cdmFeedTitle a.title {
+       color : #555;
+       font-style : italic;
+       font-weight : bold;
+}
+
+div.cdmFeedTitle a {
+       color : #555;
+}
+
+div.cdmFeedTitle a:hover {
+       color : #4684ff;
+}
+
+div.cdmHeader span.hlFeed {
+       float : right;
+       font-weight : normal;
+       font-style : italic;
+}
+
+div.cdmHeader div.hlFeed, div.cdmHeader div.hlFeed a {
+       vertical-align : middle;
+       color : #555;
+       font-weight : normal;
+       font-style : italic;
+       font-size : 11px;
+}
+
+div.cdm .hlFeed a {
+       border-radius : 4px;
+       display : inline-block;
+       padding : 1px 4px 1px 4px;
+}
+
+div.cdmContentInner p {
+       max-width : 650px;
+}
+
+div.cdmContentInner iframe {
+       min-width : 50%;
+}
+
+div.cdmHeader span.author {
+       color : #555;
+       font-size : 11px;
+       font-weight : normal;
+}
+
+
diff --git a/css/layout.css b/css/layout.css
new file mode 100644 (file)
index 0000000..3351331
--- /dev/null
@@ -0,0 +1,7 @@
+html, body#ttrssMain, body#ttrssPrefs, #main {
+       width: 100%; 
+       height: 100%;
+       border: 0; 
+       padding: 0; 
+       margin: 0;
+} 
diff --git a/css/prefs.css b/css/prefs.css
new file mode 100644 (file)
index 0000000..8720326
--- /dev/null
@@ -0,0 +1,125 @@
+#header a:hover {
+       color : black;
+}
+
+#header img {
+       vertical-align : middle;
+       cursor : pointer;
+}
+
+
+div#pref-tabs .dijitContentPane {
+       font-size : 13px;
+}
+
+div#pref-tabs {
+       margin : 0px 5px 0px 5px;
+}
+
+div#pref-tabs .dijitContentPane h3 {
+       font-size : 14px;
+       font-weight : bold;
+}
+
+#pref-filter-wrap, #pref-filter-header, #pref-filter-content, 
+#pref-label-wrap, #pref-label-header, #pref-label-content,
+#pref-user-wrap, #pref-user-header, #pref-user-content, 
+#pref-instance-wrap, #pref-instance-header, #pref-instance-content {
+       margin : 0px;
+       padding : 0px;
+       border-width : 0px;
+}
+
+#userConfigTab, #labelConfigTab, #filterConfigTab, #pref-feeds-feeds, #instanceConfigTab { 
+       padding : 0px;
+}
+
+/* preferences */
+
+table.prefPrefsList h3 {
+       margin-top : 0.5em;
+       margin-bottom : 0px;
+}
+
+tr.title td {
+       border-width : 0px 0px 1px 0px;
+       border-color : #ecf4ff;
+       border-style : solid;
+       color : #4684ff;
+}
+
+div.prefProfileHolder, div.prefFeedOPMLHolder, div.inactiveFeedHolder {
+       height : 300px;
+       overflow : auto;
+       border-width : 0px 1px 1px 1px;
+       border-color : #c0c0c0;
+       border-style : solid;
+       margin : 0px 0px 5px 0px;
+       background-color : #ecf4ff;
+}
+div.filterTestHolder, div.prefFeedOPMLHolder {
+       border-width : 1px;
+}
+
+ul.selfUpdateList {
+       height : 200px;
+       overflow : auto;
+       list-style-type : none;
+       border : 1px solid #c0c0c0;
+       background-color : #ecf4ff;
+       margin : 0px 0px 5px 0px;
+       padding : 5px;
+}
+
+div#feedlistLoading, div#filterlistLoading, div#labellistLoading {
+       text-align : center;
+       padding : 5px;
+       color : #555;
+}
+
+div#feedlistLoading img, div#filterlistLoading img, div#labellistLoading {
+       margin-right : 5px;
+}
+
+#errorButton {
+       color : red;
+}
+
+a.bookmarklet {
+       color : #4684ff;
+       border : 1px solid #ecf4ff;
+       padding : 2px;
+}
+
+table.prefPluginsList td label, table.prefUserList td {
+       cursor : pointer;
+}
+
+ul.userFeedList {
+       height : 300px;
+       overflow : auto;
+       list-style-type : none;
+       border : 1px solid #555;
+       background-color : white;
+       margin : 0px 0px 5px 0px;
+       padding : 0px;
+}
+
+table.prefErrorLog tr.errrow td {
+       font-size : 10px;
+}
+
+table.prefErrorLog tr.errrow td.errno {
+       font-style : italic;
+       font-weight : bold;
+       white-space : nowrap;
+}
+
+table.prefErrorLog td.filename, table.prefErrorLog td.login, table.prefErrorLog td.timestamp {
+       color : #555;
+}
+
+.dijitAccordionContainer-child {
+       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.2);
+}
+
diff --git a/css/tt-rss.css b/css/tt-rss.css
new file mode 100644 (file)
index 0000000..53df6ef
--- /dev/null
@@ -0,0 +1,1111 @@
+body#ttrssMain, body#ttrssPrefs, body#ttrssLogin, body {
+       background : white;
+       color : black;
+       margin : 0px;
+       padding : 0px;
+       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+       font-size: 14px;
+}
+
+body#ttrssPrefs {
+       background-color : #ecf4ff;
+}
+
+body#ttrssPrefs #footer, body#ttrssPrefs #header {
+       background-color : #ecf4ff; 
+       padding-left : 8px;
+       padding-right : 8px;
+}
+
+div.postReply {
+       padding : 0px;
+}
+
+div.postReply div.postHeader {
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #c0c0c0;
+       background : #fafafa;
+       box-shadow : 0px 0px 3px 0px rgba(0,0,0,0.1);
+       padding : 5px;
+       color : #909090;
+}
+
+div.postReply div.postTitle {
+       overflow : hidden;
+       text-overflow: ellipsis;
+       white-space : nowrap;
+}
+
+div.postReply div.postDate {
+       padding-left : 10px;
+}
+
+div.postReply div.postContent {
+       padding : 10px;
+}
+
+div.postReply div.postContent img {
+       border-width : 0px;
+       max-width : 98%;
+       height: auto;
+}
+
+div.postReply div.postEnclosures {
+       margin-top : 1em;
+       color : #555;
+}
+
+div.postReply img.tagsPic {
+       width : 16px;
+       height : 16px;
+       margin-left : 4px;
+       vertical-align : middle;
+}
+
+div.articleNote {
+       background-color : #fff7d5;
+       padding : 5px;
+       border-radius : 4px;
+       margin : 5px;
+       border-style : solid;
+       border-color : #e7d796;
+       border-width : 1px;
+       box-shadow : inset 0px 0px 2px rgba(0,0,0,0.1);
+       background-color : #fff7d5;
+       color : #9a8c59;
+}
+
+div.articleNote div.noteEdit {
+       float : right;
+       cursor : pointer;
+}
+
+div.postReply span.author {
+       font-size : 12px;
+}
+
+h1 {
+       font-size : 18px;
+}
+
+h2 {
+       font-size : 16px;
+       font-weight : bold;
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #ecf4ff;
+}
+
+h3 {
+       font-size : 12px;
+       font-weight : bold;
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #ecf4ff;
+}
+
+hr {
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #c0c0c0;
+       max-width : 90%;
+}
+
+a {
+       color : #4684ff;
+       text-decoration : none;
+}
+
+a:hover {
+       color : #88b0f0;
+}
+
+#piggie {
+       z-index : 999;
+       position : absolute;
+}
+
+#notify {
+       bottom : 10px;
+       right : 10px;
+       border-width : 1px;
+       border-style : solid;
+       position : absolute;    
+       font-size : 12px;
+       z-index : 99;
+       max-width : 200px;
+       min-width : 100px;
+       padding : 5px;
+       -width : 200px;
+       box-shadow : 0px 0px 2px rgba(0,0,0,0.2);
+}
+
+#notify img {
+       vertical-align : middle;
+       max-height : 14px;
+}
+
+#notify span.msg {
+       width : 100%;
+}
+
+#notify span.close {
+       text-align : right;
+}
+
+#notify span {
+       display : table-cell;
+       vertical-align : middle;
+       padding : 4px;
+}
+
+.notify {
+       border-color : #d7c47a;
+       background-color : #fff7d5;
+}
+
+.notify.progress {
+       border-color : #d7c47a;
+       background-color : #fff7d5;
+}
+
+.notify.info {
+       border-color : #88b0f0;
+       background-color : #ecf4ff;
+}
+
+.notify.error {
+       background-color : #ffcccc;
+       border-color : #ff0000;
+}
+
+.hl div.hlTitle a {
+       font-weight : bold;
+       color : #999;
+}
+
+.hl.Unread div.hlTitle a {
+       color : black;
+}
+
+.hl.active {
+       box-shadow : inset 0px 0px 3px 0px rgba(0,0,0,0.1);
+}
+
+.hl.active div.hlTitle a {
+       color : #4684ff;
+       text-shadow : 1px 1px 2px #fff;
+}
+
+.hl.Selected {
+       background : #f9fbff;
+}
+
+.hl.Grayed {
+       color : #909090;
+}
+
+/* #headlines-frame div.hl:nth-child(even) {
+       background : #fafafa;
+} */
+
+#headlines-frame.normal {
+
+}
+
+.hl {
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #c0c0c0;
+}
+
+.hl.active {
+       background : #ecf4ff ! important;
+}
+
+div.filterTestHolder {
+       height : 300px;
+       overflow : auto;
+       border-color : #c0c0c0;
+       border-style : solid;
+       margin : 0px 0px 5px 0px;
+       background-color : #ecf4ff;
+       border-width : 1px 1px 1px 1px;
+}
+
+
+#content-insert blockquote, #headlines-frame blockquote, .dijitContentPane blockquote {
+       margin : 5px 0px 5px 0px;
+       color : #555;
+       padding-left : 10px;
+       border-width : 0px 0px 0px 4px;
+       border-color : #c0c0c0;
+       border-style : solid;
+}
+
+#content-insert code, #headlines-frame code, .dijitContentPane code {
+       color : #009900;
+       font-family : monospace;
+       font-size : 12px;
+}
+
+#content-insert pre, #headlines-frame pre, .dijitContentPane pre {
+       margin : 5px 0px 5px 0px;
+       padding : 10px;
+       color : #555;
+       font-family : monospace;
+       font-size : 12px;
+       border-width : 0px;
+       border-color : #c0c0c0;
+       border-style : solid;
+       background : #fafafa;
+       display : block;
+       max-width : 98%;
+       overflow : auto;
+}
+
+div.notice, div.warning, div.error {
+       padding : 4px 10px 4px 4px;
+       display : inline-block;
+       margin : 2px 0px 4px 0px;
+       font-size : 12px;
+       border-style : solid;
+       border-color : #ccc;
+       border-radius : 4px;
+       border-width : 1px;
+       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
+}
+
+div.notice div.inner, div.warning div.inner, div.error div.inner {
+       vertical-align : middle;
+}
+
+div.notice {
+       background : #ecf4ff;
+       border-color : #88b0f0;
+}
+
+div.warning {
+       background : #fff7d5;
+       border-color : #e7d796;;
+}
+
+div.error {
+       background : #ffcccc;
+       border-color : #ff0000;
+}
+
+div.warning img, div.notice img, div.error img {
+       margin-right : 4px;
+       vertical-align : middle;
+}
+
+div.warning span, div.notice span, div.error span {
+       display : table-cell;
+       vertical-align : middle;
+
+}
+
+ul.nomarks {
+       list-style-type : none;
+       margin : 0px;
+       padding : 10px; 
+}
+
+div.prefHelp {
+       color : #555;
+       padding : 5px;
+}
+
+span.feed_error {
+       color : red;
+}
+
+.insensitive {
+       color : #555;
+}
+
+div#headlines-toolbar {
+       border-width : 0px 0px 1px 0px;
+       background-color : #fcfcfc;
+       border-color : #c0c0c0;
+       font-size : 12px;
+       font-family : "Segoe UI", Tahoma, sans-serif;
+       color : #555;
+       padding : 0px;
+       margin : 0px;
+       overflow : hidden;
+       height : 25px;
+       line-height : 25px;
+       padding-left : 4px;
+}
+
+div#headlines-toolbar .dijitSelect {
+       font-size : 11px;
+       position : relative;
+       top : -2px;
+}
+
+div#headlines-toolbar span.r {
+       float: right;
+   position: relative;
+       padding : 0 4px 0px 4px;
+       text-align : right;
+}      
+
+div#headlines-toolbar span.r span.error {
+       color : red;
+} 
+
+div#headlines-toolbar span.r a {
+       color : #555;
+}
+
+span.contentPreview {
+       color : #999;
+       font-weight : normal;
+       text-shadow : 1px 1px 2px #fff;
+}
+
+span.hlLabelRef {
+       background-color : #fff7d5;     
+       font-size : 8px;
+       color : #063064;
+       font-weight : normal;
+       margin-left : 2px;
+       padding : 1px 4px 1px 4px;
+       display : inline-block;
+       vertical-align : middle;
+       white-space: nowrap;
+       border-radius : 4px;
+}
+
+div.postHeader div.postDate {
+       text-align : right;
+       color : #555;
+       float : right;
+}
+
+div.postHeader div {
+       padding-bottom : 3px;
+}
+
+#feedUpdateErrors {
+       display : none;
+}
+
+#allEntryTags {
+       border-width : 0px 0px 1px 0px;
+       border-style : solid;
+       border-color : #c0c0c0;
+       padding-bottom : 5px;
+       display : none;
+}
+
+a.hlFeed {
+       display : block;
+       white-space : nowrap;
+       font-size : 9px;
+       font-style : italic;
+       font-weight : normal;
+       border-radius : 4px;
+       display : inline-block;
+       padding : 1px 2px 1px 2px;
+       margin-bottom : 2px;
+       margin-top : 2px;
+       color : #555;
+}
+
+a.hlFeed:hover {
+       color : #4684ff;
+}
+
+img.markedPic, img.pubPic {
+       cursor : pointer;
+       vertical-align : middle;
+}
+
+div.tagCloudContainer {
+       border : 1px solid #c0c0c0;
+       background-color : #ecf4ff;
+       margin : 5px 0px 5px 0px;
+       padding : 5px;
+       text-align : center;
+}
+
+div.errorExplained {
+       border : 1px solid #c0c0c0;
+       background-color : #ecf4ff;
+       margin : 5px 0px 5px 0px;
+       padding : 5px;
+}
+
+ul.feedErrorsList {
+       max-height : 300px;
+       overflow : auto;
+       list-style-type : none;
+       border : 1px solid #c0c0c0;
+       background-color : #ecf4ff;
+       margin : 0px 0px 5px 0px;
+       padding : 5px;
+}
+
+ul.feedErrorsList em {
+       color : #555;
+}
+
+ul.browseFeedList {
+       height : 300px;
+       overflow : auto;
+       border-width : 0px 1px 1px 1px;
+       border-color : #c0c0c0;
+       border-style : solid;
+       margin : 0px 0px 5px 0px;
+       background-color : white;
+       list-style-type : none;
+       padding : 0px;
+
+}
+
+ul.browseFeedList li {
+       margin : 0px;
+       padding : 2px 4px 2px 4px;
+}
+
+span.subscribers {
+       color : #808080;
+}
+
+div.subscribers {
+       color : #808080;
+       font-size : 12px;
+       float : right;
+}
+
+div.browserDetails {
+       margin : 5px 5px 5px 5px;
+       padding : 5px;
+}
+
+ul.compact {
+       list-style-type : none;
+       margin : 0px;
+       padding : 0px;
+}
+
+ul.compact li {
+       margin : 0px;
+       padding : 0px;
+}
+
+.noborder {
+       border-width : 0px;
+}
+
+#overlay {
+       background : white;
+       left : 0;
+       top : 0;
+       height : 100%;
+       width : 100%;
+       z-index : 100;
+       position : absolute;
+}
+
+#overlay_inner {
+       font-weight : bold;
+       margin : 1em;
+}
+
+form {
+       margin : 0px;
+       padding : 0px;
+}
+
+#main_toolbar_form {
+       margin : 0px;
+       padding : 0px;
+       display : table-cell;
+       white-space : nowrap;
+       width : 100%;
+}
+
+div.loadingPrompt {
+       padding : 1em;
+       text-align : center;
+       font-weight : bold;
+}
+
+div.whiteBox {
+       margin-left : 1px;
+       text-align : center;
+       padding : 1em;
+}
+
+/* html, body#ttrssMain, #main {
+       width: 100%; 
+       height: 100%;
+       padding: 0; 
+       margin: 0;
+} */
+
+#toolbar div.actionChooser {
+       display : table-cell;
+       text-align : right;
+       padding-right : 3px;
+}
+
+div.autocomplete {
+       position : absolute;
+       width : 250px;
+       background-color : white;
+       border :1px solid #778899;
+       margin : 0px;
+       padding : 0px;
+}
+
+div.autocomplete ul {
+       list-style-type : none;
+       margin : 0px;
+       padding : 0px;
+}
+
+div.autocomplete ul li.selected { 
+       background-color : #fff7d5;
+}
+
+div.autocomplete ul li {
+       list-style-type : none;
+       display : block;
+       margin : 0;
+       padding : 2px;
+       height : 32px;
+       cursor : pointer;
+}
+
+.hlContentH a, .hlContentH span {
+       color : #00cc00;
+}
+
+.hlContentL a, .hlContentL span {
+       color : #909090;
+       text-decoration : line-through;
+}
+
+span.titleWrapH, span.titleWrapH a {
+       color : #00cc00;
+}
+
+span.titleWrapL, span.titleWrapL a {
+       color : #909090;
+       text-decoration : line-through;
+}
+
+img.hlScorePic {
+       vertical-align : middle;
+       width : 16px;
+       height : 16px;
+}
+
+div.dlgSec {
+       font-size : 12px;
+       color : #555;
+       font-weight : bold;
+       clear : both;
+       height : 20px;
+}
+
+div.dlgSecCont {
+       position : relative;
+       left : 150px;
+       top : -20px;
+       float : left;
+       font-size : 12px;
+       font-weight : normal;
+}
+
+div.dlgSecCont hr {
+       height : 0px;
+       line-height : 0px;
+       border : 0px solid transparent;
+       margin : 2px;
+}
+
+div.dlgSecCont > * {
+       position : relative;
+       top : -2px;
+}
+
+div.dlgButtons {
+       text-align : right;
+       clear : both;
+}
+
+span.labelColorIndicator {
+       height : 14px;
+       width : 14px;
+       line-height : 14px;
+       font-size : 9px;
+       display : inline-block;
+       border : 1px solid black;
+       background-color : #fff7d5;     
+       color : #063064;
+       text-align : center;
+       margin-right : 2px;
+}
+
+span.labelColorIndicator2 {
+       height : 14px;
+       width : 14px;
+       font-size : 9px;
+       display : inline-block;
+       border : 1px solid black;
+       background-color : #fff7d5;     
+       color : #063064;
+       text-align : center;
+       margin-right : 2px;
+       vertical-align : bottom;
+}
+
+div#cmdline {
+       position : absolute;
+       left : 5px;
+       bottom : 5px;
+       font-size : 11px;
+       color : #555;
+       font-weight : bold;
+       background-color : white;
+       border : 1px solid #88b0f0;
+       padding : 3px 5px 3px 5px;
+       z-index : 5;
+}
+
+#feed_browser_spinner {
+       vertical-align : middle;
+       height : 18px;
+       width : 18px;
+}
+
+div.hlTitle {
+       display : table-cell;
+       cursor : pointer;
+       width : 100%;
+       vertical-align : middle;
+       padding-top : 4px;
+       padding-bottom : 4px;
+}
+
+div.hlLeft {
+       display : table-cell;
+       vertical-align : middle;
+       white-space: nowrap;
+}
+
+div.hlRight {
+       display : table-cell;
+       white-space: nowrap;
+       text-align : right;
+       vertical-align : middle;
+}
+
+div.hlRight img {
+       max-width : 16px;
+       max-height : 16px;
+}
+
+span.hlUpdated {
+       color : #555;
+       min-width : 100px;
+       display : table-cell;
+       width : 100%;
+       vertical-align : middle;
+       text-align : right;
+       font-size : 10px;
+}
+
+div.hlLeft {
+       padding-left : 8px;
+}
+
+div.hlLeft input {
+       margin-left : 4px;
+       margin-right : 4px;
+}
+
+div.hlLeft img, div.hlRight img {
+       margin : 0px 4px 0px 4px;
+}
+
+div.hlLeft img {
+       width : 16px;
+       height : 16px;
+}
+
+div.fatalError {
+       margin-bottom : 10px;
+}
+
+div.fatalError button {
+       margin-top : 5px;
+}
+
+div.fatalError textarea {
+       width : 100%;
+       height : 100px;
+}
+
+#ttrssMain #main {
+       border-width : 0px;
+       margin : 0px;
+       padding : 0px;
+}
+
+#header-wrap {
+       border-width : 0px;
+       margin : 0px;
+       padding : 0px;
+}
+
+#content-wrap {
+       padding : 0px;
+       border-width : 0px 0px 0px 1px;
+       border-style : solid;
+       border-color : #c0c0c0;
+       margin : 0px;
+}
+
+#feeds-holder {
+       padding : 0px;
+       border-color : #c0c0c0;
+       border-left-width : 0px;
+       border-bottom-width : 0px;
+       border-top-width : 0px;
+       overflow : hidden;
+       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
+       background : #f9fbff;
+}
+
+#headlines-wrap-inner {
+       padding : 0px;
+       margin : 0px;
+       border-width : 0px;
+}
+
+#headlines-frame {
+       padding : 0px;
+       border-color : #c0c0c0;
+       border-style : solid;
+       border-width : 0px;
+       margin-top : 0px;
+       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
+}
+
+#headlines-toolbar_splitter, #toolbar_splitter {
+       display : none;
+}
+
+#toolbar {
+       padding : 0px;
+       margin : 0px;
+       border-width : 0px;
+       white-space: nowrap;
+       font-size : 12px;
+       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
+}
+
+#header {
+       border-width : 0px;
+       text-align : right;
+       color : #555;
+       padding : 5px 5px 0px 0px;
+       margin : 0px;
+       position : absolute;
+       right : 0px;
+       top : 0px;
+       z-index : 5;
+}
+
+#footer {
+       text-align : center;
+       color : #555;
+       padding : 4px 4px 8px 4px;
+       border-width : 0px;
+}
+
+#content-insert {
+       padding : 0px;
+       border-color : #c0c0c0;
+       border-bottom-width : 0px;
+       border-right-width : 0px;
+       border-left-width : 0px;
+       line-height: 20px;
+       overflow : auto;
+}
+
+.dijitTreeLabel.Unread {
+       font-weight : bold;
+}
+
+.dijitTreeLabel {
+       outline : 0;
+}
+
+.feedParam {
+       color : #555;
+       float : right;
+       margin-right : 1em;
+}
+
+.labelParam {
+       float : right;
+       margin-right : 1em;
+}
+
+.dijitTreeLabel.Disabled, .labelParam.Disabled {
+       color : #555;
+}
+
+.dijitTreeRow.Error {
+       color : red;
+}
+
+.dijitTreeRow.Hidden {
+       display : none;
+}
+
+img.feedIcon, img.tinyFeedIcon {
+       width : 16px;
+       height : 16px;
+       vertical-align : middle;
+       display : inline-block;
+}
+
+.dijitToolbar {
+       text-shadow : 1px 1px 2px #fff;
+}
+
+.dijitAccordionTitleFocus {
+       text-shadow : 1px 1px 2px #fff;
+}
+
+.dijitDialog .dijitToolbar {
+       border : 1px solid #c0c0c0;
+}
+
+.dijitDialog h2 {
+       margin-top : 0px;
+       margin-bottom : 4px;
+       border-width : 0px;
+}
+
+.player {
+       display : inline-block;
+       color : #555;
+       font-size : 11px;
+       font-family : sans-serif;
+       border : 1px solid #555;
+       padding : 0px 4px 0px 4px;
+       margin : 0px 2px 0px 2px;
+       width : 50px;
+       text-align : center;
+       background : white;
+}
+
+.player.playing {
+       color : #00c000;
+       border-color : #00c000;
+}
+
+.player:hover {
+       background : #f0f0f0;
+       cursor : pointer;
+}
+
+#headlines-spacer {
+       height : 100%;
+       margin-left : 1px;
+       text-align : center;
+       padding : 1em;
+       color : #555;
+}
+
+ul#filterDlg_Matches, ul#filterDlg_Actions {
+       max-height : 100px;
+       overflow : auto;
+       list-style-type : none;
+       border-style : solid;
+       border-color : #c0c0c0;
+       border-width : 0px 1px 1px 1px;
+       background-color : #ecf4ff;
+       margin : 0px 0px 5px 0px;
+       padding : 0px;
+}
+
+ul#filterDlg_Matches li, ul#filterDlg_Actions li {
+       cursor : pointer;
+       padding : 0px 0px 0px 5px;
+}
+
+ul#filterDlg_Matches li div.dijitCheckBox, ul#filterDlg_Actions li div.dijitCheckBox {
+       margin-right : 5px;
+}
+
+ul.helpKbList {
+       max-height : 300px;
+       overflow : auto;
+       list-style-type : none;
+       border : 1px solid #c0c0c0;
+       background-color : #ecf4ff;
+       margin : 0px 0px 5px 0px;
+       padding : 5px;
+}
+
+ul.helpKbList span.hksequence {
+       width : 6em;
+       margin-left : 20px;
+       color : #88b0f0;
+       font-weight : bold;
+       display : inline-block;
+}
+
+ul.helpKbList h2 {
+       margin-top : 0px;
+}
+
+.dijitTreeNode .loadingNode {
+       margin-left : 3px;
+       height : 9px;
+}
+
+span.collapseBtn {
+       cursor : pointer;
+}
+
+div.postContent p {
+       max-width : 650px;
+}
+
+div.postContent iframe {
+       min-width : 50%;
+}
+
+div.postHeader span.author {
+       color : #555;
+       font-size : 11px;
+       font-weight : normal;
+}
+
+body#ttrssZoom {
+       margin-left : auto;
+       margin-right : auto;
+       padding : 20px;
+       max-width : 800px;
+       background : #f9fbff;
+}
+
+body#ttrssZoom div.postContent p {
+       max-width : 650px;
+}
+
+body#ttrssZoom div.postHeader {
+       margin : 10px;
+       border : 1px solid #ccc;
+       box-shadow : none;
+       border-radius : 4px;
+}
+
+body#ttrssZoom div.postReply {
+       border : 1px solid #ccc;
+       border-radius : 4px;
+       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
+       background : white;
+}
+
+body#ttrssZoom div.postContent {
+
+}
+
+body#ttrssZoom div.footer {
+       margin-top : 1em;
+       text-align : center;
+}
+
+body#ttrssZoom div.postContent img {
+       max-width : 650px;
+       height : auto;
+} 
+
+select.attachments {
+       display : block;
+       margin-top : 10px;
+       max-width : 120px;
+}
+
+div.hl.active {
+       border-color : #88b0f0;
+}
+
+#selected_prompt {
+       margin-right : 25px;
+}
+
+#feedTree .dijitTreeRow {
+       padding : 2px 0px 2px;
+       border-width : 1px;
+       border-color : transparent;
+       color : #333;
+}
+
+#feedTree .dijitTreeNode {
+       padding : 0px;
+       border-width : 0px;
+}
+
+#feedTree { 
+       height : 100%;
+       overflow-x : hidden;
+       font-family : "Segoe UI", Tahoma, sans-serif;
+}
+
+#feedTree .counterNode.aux {
+       background : #f0f0f0;
+       color : #999;
+       border-color : #f0f0f0;
+}
+
+#feedTree .counterNode {
+       font-weight : bold;
+       display : inline-block;
+       font-size : 9px;
+       text-align : center;
+       border : 1px solid #88b0f0;
+       color : white;
+       background : #88b0f0;
+       border-radius : 4px;
+       vertical-align : middle;
+       float : right;
+       margin-right : 5px;
+       position : relative;
+       top : 2px;
+       min-width : 23px;
+}
+
+#feedTree .dijitTreeRow {
+       max-width: 100%;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+body#ttrssPrefs hr {
+       border-color : #ecf4ff;
+       max-width : 100%;
+}
+
+.dijitMenuItemLabel {
+       font-size : 13px;
+}
+
+.dijitTreeRowSelected .dijitTreeLabel {
+       text-shadow : 1px 1px 2px #fff;
+}
diff --git a/css/utility.css b/css/utility.css
new file mode 100644 (file)
index 0000000..ac0180e
--- /dev/null
@@ -0,0 +1,265 @@
+body {
+       background : #f9fbff;
+       color : black;
+       padding : 0px;
+       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+       font-size: 14px;
+       margin-left : auto;
+       margin-right : auto;
+       max-width : 800px;
+}
+
+form {
+       margin : 10px 0px 0px 0px;
+       padding : 0px;
+}
+
+div.content {
+       background : white;
+       border : 1px solid #ccc;
+       padding : 10px;
+       border-radius : 4px;
+       box-shadow : inset 0 0 3px rgba(0,0,0,0.1);
+}
+
+p.warning {
+       color : red;
+}
+
+p.query, code {
+       color : green;
+}
+
+p.insensitive {
+       color : gray;
+}
+
+div.insensitive-small {
+       color : gray;
+       font-size : 10px;
+}
+
+.floatingLogo {
+       float : right;
+       position : relative;
+       top : -10px;
+}
+
+a {
+       color : #4684ff;
+       text-decoration : none;
+}
+
+a:hover {
+       color : black;
+}
+
+div.notice, div.warning, div.error {
+       padding : 4px 10px 4px 4px;
+       display : inline-block;
+       margin : 2px 0px 4px 0px;
+       font-size : 12px;
+       border-style : solid;
+       border-color : #ccc;
+       border-radius : 4px;
+       border-width : 1px;
+       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
+}
+
+div.notice div.inner, div.warning div.inner, div.error div.inner {
+       vertical-align : middle;
+}
+
+div.notice {
+       background : #ecf4ff;
+       border-color : #88b0f0;
+}
+
+div.warning {
+       border-color : #EFDC88;
+       background : #fff7d5;
+}
+
+div.error {
+       background : #ffcccc;
+       border-color : #ff0000;
+}
+
+div.warning img, div.notice img, div.error img {
+       margin-right : 4px;
+       vertical-align : middle;
+}
+
+div.warning span, div.notice span, div.error span {
+       display : table-cell;
+       vertical-align : middle;
+
+}
+
+h1 {
+       color : #88b0f0;
+       font-size : 32px;
+       margin : 20px 0px 5px 0px;
+       text-shadow : 0 0 6px #fff;
+}
+
+h2 {
+       color : #88b0f0;
+       font-size : 14pt;
+       border-width : 0px 0px 1px 0px;
+       border-color : #f0f0f0;
+       border-style : solid; 
+}
+
+div.content > h2 {
+       margin-top : 0px;
+}
+
+div.rss h1 {
+       border-width : 0px 0px 1px 0px;
+       border-color : gray;
+       border-style : dotted;
+       color : gray;
+       margin-right : 90px;
+}
+
+div.rss h2 {
+       font-size : 12pt;
+}
+
+div.rss a.extlink {
+       color : gray;
+       border-width : 0px 0px 1px 0px;
+       border-color : #778899;
+       border-style : dotted;
+       font-size : 9pt;
+}
+
+div.rss img {
+       max-width : 775px;
+}
+
+div.rss p.description {
+       color : gray;
+       font-size : 9pt;
+}
+
+div.rss div.content {
+       margin-top : 0.5em;
+}
+
+div.rss img.feedicon {
+       float : right;
+}
+
+div.rss hr {
+       border-width : 0px 0px 1px 0px;
+       border-style : dashed;
+       border-color : #e0e0e0;
+}
+
+body#sharepopup {
+       background-color : white;
+       background-image : url("images/toolbar.png");
+       background-repeat : repeat-x;
+       background-position : bottom;
+       margin : 10px;
+       padding : 0px;
+}
+
+body#sharepopup h1 {
+       font-size : 14px;
+       margin : 0px;
+       color : #88b0f0;
+}
+
+body#sharepopup table {
+       background : white;
+       border : 1px solid #88b0f0;
+       padding : 5px;
+}
+
+body#sharepopup form { 
+       height : 100%;
+}
+
+body#sharepopup input { 
+       width : 100%;
+}
+
+div.autocomplete {
+       position : absolute;
+       width : 250px;
+       background-color : white;
+       border :1px solid #778899;
+       margin : 0px;
+       padding : 0px;
+       z-index : 4;
+}
+
+div.autocomplete ul {
+       list-style-type : none;
+       margin : 0px;
+       padding : 0px;
+       font-size : 10px;
+}
+
+div.autocomplete ul li.selected { 
+       background-color : #fff7d5;
+}
+
+div.autocomplete ul li {
+       list-style-type : none;
+       display : block;
+       margin : 0;
+       padding : 2px;
+       height : 32px;
+       cursor : pointer;
+}
+
+fieldset { 
+       border-width : 0px;
+       padding : 0px 0px 5px 0px;
+       margin : 0px;
+}
+
+fieldset input {
+       font-family : sans-serif;
+       font-size : medium;
+       border-spacing : 2px;
+       border : 1px solid #b5bcc7;
+       padding : 2px;
+}
+
+fieldset label {
+       width : 120px;
+       margin-right : 20px;
+       display : inline-block;
+       text-align : right;
+       color : gray;
+}
+
+body.otp {
+       margin : 1em;
+       padding : 0px;
+}
+
+form.otpform {
+       margin : 0px;
+       padding : 0px;
+}
+
+form.otpform label {
+       margin : 0px;
+       padding : 0px;
+}
+
+body.otp div.content {
+       display : inline-block;
+       width : auto;
+}
+
+span.hint {
+       font-size : 10px;
+       color : gray;
+}
index 41bf7b819f023ab9f1471165cada6c31def37cd0..91eaa2dc2c2dd4a1e69ce4097d94234f02a2b1ba 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 
-require_once "lib/floIcon.php";
+if (file_exists("lib/floIcon.php")) {
+       require_once "lib/floIcon.php";
+}
 
 function _resolve_htmlcolor($color) {
        $htmlcolors = array ("aliceblue" => "#f0f8ff",
@@ -286,7 +288,8 @@ function hsl2rgb($arr) {
 
                $size = @getimagesize($imageFile);
 
-               if (!defined('_DISABLE_FLOICON') && strtolower($size['mime']) == 'image/vnd.microsoft.icon') {
+               if (strtolower($size['mime']) == 'image/vnd.microsoft.icon' && class_exists("floIcon")) {
+
                        $ico = new floIcon();
                        @$ico->readICO($imageFile);
 
index 965fd1a7935f29d371bcdb7af824338ab211cde9..4427936e58cab7893f1233db08102bba1c1705d5 100644 (file)
@@ -26,7 +26,7 @@
 
                while ($line = db_fetch_assoc($result)) {
 
-                       if (get_pref('DIGEST_ENABLE', $line['id'], false)) {
+                       if (@get_pref('DIGEST_ENABLE', $line['id'], false)) {
                                $preferred_ts = strtotime(get_pref('DIGEST_PREFERRED_TIME', $line['id'], '00:00'));
 
                                // try to send digests within 2 hours of preferred time
index 5296f9e61ea662db69291a0feb2fc6b71dba1ca8..bad01eb96777643dc387bb5ac68b1cb365676c15 100644 (file)
        }
 
        function file_is_locked($filename) {
-               if (function_exists('flock')) {
-                       $fp = @fopen(LOCK_DIRECTORY . "/$filename", "r");
-                       if ($fp) {
-                               if (flock($fp, LOCK_EX | LOCK_NB)) {
-                                       flock($fp, LOCK_UN);
+               if (file_exists(LOCK_DIRECTORY . "/$filename")) {
+                       if (function_exists('flock')) {
+                               $fp = @fopen(LOCK_DIRECTORY . "/$filename", "r");
+                               if ($fp) {
+                                       if (flock($fp, LOCK_EX | LOCK_NB)) {
+                                               flock($fp, LOCK_UN);
+                                               fclose($fp);
+                                               return false;
+                                       }
                                        fclose($fp);
+                                       return true;
+                               } else {
                                        return false;
                                }
-                               fclose($fp);
-                               return true;
-                       } else {
-                               return false;
                        }
+                       return true; // consider the file always locked and skip the test
+               } else {
+                       return false;
                }
-               return true; // consider the file always locked and skip the test
        }
 
+
        function make_lockfile($filename) {
                $fp = fopen(LOCK_DIRECTORY . "/$filename", "w");
 
 
                $owner_uid = $_SESSION["uid"];
 
-               $result = db_query("SELECT id,caption,COUNT(unread) AS unread
+               $result = db_query("SELECT id,caption,COUNT(u1.unread) AS unread,COUNT(u2.unread) AS total
                        FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON
                                (ttrss_labels2.id = label_id)
-                               LEFT JOIN ttrss_user_entries ON (ref_id = article_id AND unread = true
-                                       AND ttrss_user_entries.owner_uid = $owner_uid)
+                               LEFT JOIN ttrss_user_entries AS u1 ON (u1.ref_id = article_id AND u1.unread = true
+                                       AND u1.owner_uid = $owner_uid)
+                               LEFT JOIN ttrss_user_entries AS u2 ON (u2.ref_id = article_id AND u2.unread = false
+                                       AND u2.owner_uid = $owner_uid)
                                WHERE ttrss_labels2.owner_uid = $owner_uid GROUP BY ttrss_labels2.id,
                                        ttrss_labels2.caption");
 
 
                        $id = label_to_feed_id($line["id"]);
 
-                       $label_name = $line["caption"];
-                       $count = $line["unread"];
-
                        $cv = array("id" => $id,
-                               "counter" => (int) $count);
+                               "counter" => (int) $line["unread"],
+                               "auxcounter" => (int) $line["total"]);
 
                        if ($descriptions)
-                               $cv["description"] = $label_name;
-
-//                     if (get_pref('EXTENDED_FEEDLIST'))
-//                             $cv["xmsg"] = getFeedArticles($id)." ".__("total");
+                               $cv["description"] = $line["caption"];
 
                        array_push($ret_arr, $cv);
                }
                                $filter_query_part = filter_to_sql($filter, $owner_uid);
 
                                // Try to check if SQL regexp implementation chokes on a valid regexp
+
+
                                $result = db_query("SELECT true AS true_val FROM ttrss_entries,
-                                       ttrss_user_entries, ttrss_feeds, ttrss_feed_categories
+                                       ttrss_user_entries, ttrss_feeds
                                        WHERE $filter_query_part LIMIT 1", false);
 
                                if ($result) {
                                $rv['content'] .= "<html><head>
                                                <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
                                                <title>Tiny Tiny RSS - ".$line["title"]."</title>
-                                               <link rel=\"stylesheet\" type=\"text/css\" href=\"tt-rss.css\">
+                                               <link rel=\"stylesheet\" type=\"text/css\" href=\"css/tt-rss.css\">
                                        </head><body id=\"ttrssZoom\">";
                        }
 
        }
 
        function calculate_dep_timestamp() {
-               $files = array_merge(glob("js/*.js"), glob("*.css"));
+               $files = array_merge(glob("js/*.js"), glob("css/*.css"));
 
                $max_ts = -1;
 
index b7dae10166c77bfaa00d6ad7254baa5a4ac85e14..891e25e13a24b914d3ac1d90e6f753eabe9da1e8 100644 (file)
@@ -1,17 +1,18 @@
+<?php startup_gettext(); ?>
 <html>
 <head>
        <title>Tiny Tiny RSS : Login</title>
        <link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
-       <link rel="stylesheet" type="text/css" href="tt-rss.css">
+       <link rel="stylesheet" type="text/css" href="css/tt-rss.css">
        <link rel="shortcut icon" type="image/png" href="images/favicon.png">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script type="text/javascript" src="lib/dojo/dojo.js"></script>
-       <script type="text/javascript" src="lib/dijit/dijit.js"></script>
        <script type="text/javascript" src="lib/dojo/tt-rss-layer.js"></script>
        <script type="text/javascript" src="lib/prototype.js"></script>
        <script type="text/javascript" src="js/functions.js"></script>
        <script type="text/javascript" charset="utf-8" src="errors.php?mode=js"></script>
        <script type="text/javascript">
+               require({cache:{}});
                Event.observe(window, 'load', function() {
                        init();
                });
 
 <script type="text/javascript">
 function init() {
-       dojo.require("dijit.form.Button");
-       dojo.require("dijit.form.CheckBox");
-       dojo.require("dijit.form.Form");
-       dojo.require("dijit.form.Select");
-       dojo.require("dijit.form.TextBox");
-       dojo.require("dijit.form.ValidationTextBox");
 
-       dojo.parser.parse();
+       require(['dojo/parser','dijit/form/Button','dijit/form/CheckBox','dijit/form/Form',
+       'dijit/form/Select','dijit/form/TextBox','dijit/form/ValidationTextBox'],function(parser){
+               parser.parse();
+               //show tooltip node only after this widget is instaniated.
+               dojo.query('div[dojoType="dijit.Tooltip"]').style({
+                       display:''
+               });
+               fetchProfiles();
+               dijit.byId("bw_limit").attr("checked", getCookie("ttrss_bwlimit") == 'true');
+               document.forms.loginForm.login.focus();
+       });
 
-       fetchProfiles();
-
-       dijit.byId("bw_limit").attr("checked", getCookie("ttrss_bwlimit") == 'true');
-
-       document.forms.loginForm.login.focus();
 }
 
 function fetchProfiles() {
@@ -188,7 +188,6 @@ function bwLimitChange(elem) {
                                value="<?php echo $_SESSION["fake_login"] ?>" />
                </div>
 
-               <?php if (strpos(PLUGINS, "auth_internal") !== FALSE) { ?>
 
                <div class="row">
                        <label><?php echo __("Password:") ?></label>
@@ -196,10 +195,11 @@ function bwLimitChange(elem) {
                                        style="width : 220px" class="input"
                                        value="<?php echo $_SESSION["fake_password"] ?>"/>
                        <label></label>
+               <?php if (strpos(PLUGINS, "auth_internal") !== FALSE) { ?>
                        <a class='forgotpass' href="public.php?op=forgotpass"><?php echo __("I forgot my password") ?></a>
+               <?php } ?>
                </div>
 
-               <?php } ?>
 
                <div class="row">
                        <label><?php echo __("Profile:") ?></label>
@@ -217,7 +217,7 @@ function bwLimitChange(elem) {
                        <label id="bw_limit_label" style='display : inline' for="bw_limit"><?php echo __("Use less traffic") ?></label>
                </div>
 
-               <div dojoType="dijit.Tooltip" connectId="bw_limit_label" position="below">
+               <div dojoType="dijit.Tooltip" connectId="bw_limit_label" position="below" style="display:none">
 <?php echo __("Does not display images in articles, reduces automatic refreshes."); ?>
                </div>
 
index 612c914c034b2f6cc75498c3f334b7cb9fccb059..4c3e861237349a105af107e21225c25f868a9a06 100644 (file)
        } // function update_daemon_common
 
        // ignore_daemon is not used
-       function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false,
-               $override_url = false) {
+       function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false) {
 
                $debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug'];
 
 
                $feed = db_escape_string($feed);
 
-               if ($override_url) $fetch_url = $override_url;
-
                $date_feed_processed = date('Y-m-d H:i');
 
                $cache_filename = CACHE_DIR . "/simplepie/" . sha1($fetch_url) . ".xml";
 
+               $pluginhost = new PluginHost();
+               $pluginhost->set_debug($debug_enabled);
+               $user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid);
+
+               $pluginhost->load(PLUGINS, PluginHost::KIND_ALL);
+               $pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid);
+               $pluginhost->load_data();
+
                $rss = false;
                $rss_hash = false;
-               $cache_timestamp = file_exists($cache_filename) ? filemtime($cache_filename) : 0;
 
                $force_refetch = isset($_REQUEST["force_refetch"]);
 
 
                if (!$rss) {
 
+                       foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) {
+                               $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed);
+                       }
+
                        if (!$feed_data) {
                                _debug("fetching [$fetch_url]...", $debug_enabled);
                                _debug("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T', $last_article_timestamp), $debug_enabled);
 
                                _debug("fetch done.", $debug_enabled);
 
-                               if ($feed_data) {
+                               /* if ($feed_data) {
                                        $error = verify_feed_xml($feed_data);
 
                                        if ($error) {
                                                        if ($error) $feed_data = '';
                                                }
                                        }
-                               }
+                               } */
                        }
 
                        if (!$feed_data) {
                        }
                }
 
-               $pluginhost = new PluginHost();
-               $pluginhost->set_debug($debug_enabled);
-               $user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid);
-
-               $pluginhost->load(PLUGINS, PluginHost::KIND_ALL);
-               $pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid);
-               $pluginhost->load_data();
-
                foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_FETCHED) as $plugin) {
-                       $feed_data = $plugin->hook_feed_fetched($feed_data);
+                       $feed_data = $plugin->hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed);
                }
 
                // set last update to now so if anything *simplepie* crashes later we won't be
                        mb_strtolower(strip_tags($title), 'utf-8'));
        }
 
-       function verify_feed_xml($feed_data) {
+       /* function verify_feed_xml($feed_data) {
                libxml_use_internal_errors(true);
                $doc = new DOMDocument();
                $doc->loadXML($feed_data);
                $error = libxml_get_last_error();
                libxml_clear_errors();
                return $error;
-       }
+       } */
 
        function housekeeping_common($debug) {
                expire_cached_files($debug);
index b2888b1d7e65d50591f5cfebb30c48acace68b7d..29e53fa336f29648f75c4186cd11cc8bca75386d 100644 (file)
                        <head>
                        <title>Startup failed</title>
                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-                               <link rel="stylesheet" type="text/css" href="utility.css">
+                               <link rel="stylesheet" type="text/css" href="css/utility.css">
                        </head>
                <body>
                <div class="floatingLogo"><img src="images/logo_small.png"></div>
index c43d2db4a55101777fc3c91de8cefbe7bea3cccb..8dae2831ffa037ad1d4f5d1dfeb8fc81003ecd10 100644 (file)
--- a/index.php
+++ b/index.php
        <title>Tiny Tiny RSS</title>
 
        <?php stylesheet_tag("lib/dijit/themes/claro/claro.css"); ?>
-       <?php stylesheet_tag("tt-rss.css"); ?>
-       <?php stylesheet_tag("cdm.css"); ?>
+       <?php stylesheet_tag("css/layout.css"); ?>
 
        <?php if ($_SESSION["uid"]) {
                $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false);
-               if ($theme) {
+               if ($theme && file_exists("themes/$theme")) {
                        stylesheet_tag("themes/$theme");
+               } else {
+                       stylesheet_tag("themes/default.css");
                }
        }
        ?>
index 6cb2ace4f370c8b5e0788354c5fd9a66b5e04893..06f13fe142a9626a044f513d87c08767c2dc4260 100644 (file)
@@ -2,7 +2,7 @@
 <head>
        <title>Tiny Tiny RSS - Installer</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-       <link rel="stylesheet" type="text/css" href="../utility.css">
+       <link rel="stylesheet" type="text/css" href="../css/utility.css">
        <style type="text/css">
        textarea { font-size : 12px; }
        </style>
                        if (!$result) {
                                $query = htmlspecialchars($query);
                                if ($die_on_error) {
-                                       die("Query <i>$query</i> failed: " . ($link ? mysql_error($link) : "No connection"));
+                                       die("Query <i>$query</i> failed: " . ($link ? function_exists("mysqli_connect") ? mysqli_error($link) : mysql_error($link) : "No connection"));
                                }
                        }
                        return $result;
index dc8d3fe88006b9e6ef3c0a44dd00583638ef6358..b708accfd6d75ba5fd4642a74ba647ebfee4f2fe 100644 (file)
@@ -590,7 +590,7 @@ function moveToPost(mode, noscroll, noexpand) {
 
                                        if (!getInitParam("cdm_expanded")) {
 
-                                               if (!noscroll && article.offsetTop < ctr.scrollTop) {
+                                               if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
                                                        scrollArticle(-ctr.offsetHeight/4);
                                                } else {
                                                        cdmExpandArticle(prev_id, noexpand);
@@ -1240,6 +1240,29 @@ function headlines_scroll_handler(e) {
 
                unpackVisibleHeadlines();
 
+               // set topmost child in the buffer as active
+               if (getInitParam("cdm_auto_catchup") == 1) {
+                       var rows = $$("#headlines-frame > div[id*=RROW]");
+
+                       for (var i = 0; i < rows.length; i++) {
+                               var child = rows[i];
+
+                               if ($("headlines-frame").scrollTop < child.offsetTop &&
+                                       child.offsetTop - $("headlines-frame").scrollTop < 100) {
+
+                                       if (_active_article_id) {
+                                               var row = $("RROW-" + _active_article_id);
+                                               if (row) row.removeClassName("active");
+                                       }
+
+                                       _active_article_id = child.id.replace("RROW-", "");
+                                       showArticleInHeadlines(_active_article_id, true);
+                                       updateSelectedPrompt();
+                                       break;
+                               }
+                       }
+               }
+
                if (!_infscroll_disable) {
                        if ((hsp && e.scrollTop + e.offsetHeight >= hsp.offsetTop - hsp.offsetHeight) ||
                                        (e.scrollHeight != 0 &&
@@ -1275,6 +1298,7 @@ function headlines_scroll_handler(e) {
 
                                                //console.log("auto_catchup_batch: " + catchup_id_batch.toString());
                                        }
+
                                });
 
                        if (catchup_id_batch.length > 0) {
@@ -1897,7 +1921,7 @@ function initHeadlinesMenu() {
                                }}));
 
                menu.addChild(new dijit.MenuItem({
-                       label: __("Toggle marked"),
+                       label: __("Toggle starred"),
                        onClick: function(event) {
                                var ids = getSelectedArticleIds2();
                                // cast to string
diff --git a/lib/floIcon.php b/lib/floIcon.php
deleted file mode 100644 (file)
index 59902b6..0000000
+++ /dev/null
@@ -1,849 +0,0 @@
-<?php
-/***************************************************************************
- *  Original floIcon copyright (C) 2007 by Joshua Hatfield.                *
- *                                                                         *
- *  In order to use any part of this floIcon Class, you must comply with   *
- *  the license in 'license.doc'.  In particular, you may not remove this  *
- *  copyright notice.                                                      *
- *                                                                         *
- *  Much time and thought has gone into this software and you are          *
- *  benefitting.  We hope that you share your changes too.  What goes      *
- *  around, comes around.                                                  *
- ***************************************************************************
-
-Version 1.1.1:
-Date: 2009-03-16
-
-Changes:
-I was a little hasty on that last update.  A couple new bugs from 1.1.0 have
-been fixed.
-
-Version 1.1.0:
-Date: 2009-03-16
-
-Changes:
-Added Vista support.
-Fixed a number of minor bugs.  Many thanks to Dvir Berebi for pointing
-        them out.
-
-Version 1.0.5:
-Date: 2009-03-15
-
-Changes:
-Fixed bug when operating on low bit count images (1 or 4) with odd dimensions.
-
-Version 1.0.4:
-Date: 2007-05-25
-
-Changes:
-Made function not break quite so bad when reading a PNG file on a Vista icon.
-        Now, you shouldn't be loading Vista icons anyways, but since I'm trying to
-        upgrade to Vista compatible and I need a comparison, I've got to.
-
-Version 1.0.3:
-Date: 2007-05-25
-
-Changes:
-Okay, this one was just stupid.  When adding large image support, I messed up
-        and when reading, it doubled the image size.  Now, it's fixed.
-I took the opportunity to also add a dummy AND map for 32 images on those
-        readers who might be looking for it (though it's not supposed to be used.)
-
-Version 1.0.2:
-Date: 2007-05-24
-
-Sorry about two versions so quickly back to back, but something needed to be
-done with speed...things were getting too slow.  I'm sure you'll be okay.
-
-Changes:
-Told palette determination to stop at 257 colors or is 32 bit because the
-        palette is not used at that point and gets really slow when it starts
-        getting into the high numbers, for instance, in photographs or gradient
-        truecolor images with lots of unique colors.
-After experimenting, it appears that Windows XP does in fact support 256x256
-        images and larger by setting the entry value to 0 in the 1 byte that holds
-        that value and storing the true dimentions in the image header later.  Of
-        course, it still doesn't use these images in normal operation.  XP will
-        resize these and use them if no other images are available.
-Wrapped main documentation (this) to the 80th column for easier reading.
-
-Version 1.0.1:
-Date: 2007-05-23
-
-Thank you everyone for actively using the implementation on my site and
-illuminating me very quickly to a number of glaring bugs in this class.
-
-Changes:
-Added version history.
-Fixed bug with non-standard sizes in AND map reading AND writing.
-Fixed bug with palette images using non-black color in backgrounds.
-Fixed bug with height/width reversal reading files.
-
-
-Version 1.0.0:
-Date: 2007-05-17
-Original release date.
-
-
-Foreword:
-If you are simply in the effort of making an ICO file, may I recommend visiting
-my site, http://www.flobi.com/ , and clicking on floIcon.  I have a fully
-functional implementation (on which the sample.php is based) where you can also
-see recent icons submitted by other visitors.  No registration required, no
-intrusive ads.  (As of this writing, there aren't actually any ads at all, I
-might add google ads at some point.)
-
-If you are trying to get an idea of how ICO files, work, may I recommend the
-page I used, http://www.daubnet.com/formats/ICO.html .  It does not fully cover
-icon files, but it does a very good job of what it does.  Any additional
-information, I will try to post at
-http://www.flobi.com/test/floIcon/more_on_icons.php for your convenience.
-
-If you are trying to get an idea of how image resource files work, I recommend
-ANY other class that deals with images.  This class essentially plots points on
-the image, and that's not perticularly advanced.
-
-For any purpose, I wish you luck and feel free to contact me with any bugs,
-comments, questions, etc.  - Flobi
-
-Summary:
-This class parses ICO files.  It reads directly from the ICO file, headers
-first, so that if you are only retrieving 1 image, the entire ICO file need not
-be parsed.  It supports merging ICO files.  It supports adding PHP image
-resources as new images to the file.  It has an export capability that can
-easily be written to a new (or the same) ICO file for saving ICO files.  All
-sizes from 1x1 to 255x255 pixels and 1, 4, 8, 24 (plus transparency) and 32 bit
-images are supported.  Image retrieval by size is supported.
-
-Included is a fully functional sample that allows users to upload ICO, GIF,
-JPEG and PNG files into a session icon file as well as remove images from the
-file and download the completed file (sample.php).
-
-Known Limitations: Does not support Vista icons.  Does not support inversion
-palette method (because of the limitations of the PHP image resource).
-
-Addendum on Limitations:
-Windows Vista has added support for 256x256 size icons and now stores files as
-PNG's.  This class is for older ICO files.  A new class is currently under
-development that supports the new Windows Vista format.
-
-Palette inversion (my name for this technique) is the technique of using a black
-pixel (0, 0, 0) with a 1 "AND" pixel.  White pixels with a 1 "AND" show
-transparent (or "don't" show).  Black pixels with a 1 "AND" show inverted
-(sometimes).  Because this method isn't uniformly supported or documented and
-the PHP image resource doesn't support it, I have decided to not as well.  This
-does not apply to 32 bit images which include alpha transparency and no AND map.
-
-Though other functions exist, these are the only ones I believe offer usefulness
-to be public.
-floIcon public functions:
-        readICO($file, $offset = 0)
-                Loads the icon from the specified filepath ($file) starting at the
-                specified file offset ($offset).  This function MERGES the loaded icon
-                images into the floIcon object.
-
-        formatICO($offset = 0)
-                Returns the current floIcon object formatted as an .ICO file with the
-                file offset altered by $offset.  If there are too many or too large
-                images, causing any images saved past the 4,294,967,296th byte, this
-                will return false.  (This is well outside PHP's default memory
-                allocation.)
-
-        addImage($imageResource, $desiredBitCount = 1, $pngIfWidthExceeds = 48)
-                Adds an icon image to the icon file based on the passed image resource
-                ($imageResource).  It will automatically determine the bit count, but
-                can be persuaded to increase that to $desiredBitCount if that value is
-                greater than the determined bit count.
-
-                NOTE: The image resource is saved by REFERRENCE.  So, if you edit it
-                then call getImage, the resource returned will be the same, editions and
-                all.  Destruction of the resource will cause a new resource to be
-                created in getImage().
-
-        getImage($offset)
-                Returns the php image resource either assigned by addImage or created
-                dynamically at calltime by the data loaded with readICO().  The offset
-                specified here ($offset) is the array offset starting at 0 and ending
-                at countImages().
-
-        getBestImage($height = 32, $width = 32)
-                Returns the php images resource of the highest quality image closest to
-                the size specified.  This could be useful when you only want to display
-                the icon in an icon list with a single representative icon.  A resized
-                copy of the highest quality available image will be returned if there is
-                no 32 or 24 bit icon present at the speficied dimentions.
-
-        sortImagesBySize()
-                Sorts the $this->images array by order of size, smallest to largest.
-                This is the optimal sorting for icon files.
-
-        countImages()
-                Returns a count of how many images are present in the current floIcon
-                object.
-
-floIcon public variables:
-        $images
-                Contains a numerically indexed array of floIconImage objects.
-        $updated
-                True if an image has been added since load or last formatICO, otherwise
-                false.
-
-floIconImage public functions:
-        getHeader()
-                Returns an associative array containing the information from the ICO
-                image header.
-
-        getEntry()
-                Returns an associative array containing the information from the ICO
-                entry header.
-
-                NOTE: If this icon image was created by php image resource, this may not
-                have accurate information until saving from floIcon with the formatICO()
-                function.  Specifically, offset information will be inaccurate.
-
-        getImageResource()
-                Returns a php image resource.  Same as floIcon's getImage() function.
-
-        setImageResource($imageResource, $desiredBitCount = 1, $pngIfWidthExceeds = 48)
-                Changes this icon image based on the passed image resource
-                ($imageResource). It will automatically determine the bit count, but can
-                be persuaded to increase that to $desiredBitCount if that value is
-                greater than the determined bit count.
-
-                NOTE: The image resource is saved by REFERRENCE.  So, if you edit it
-                then call getImageResource, the resource returned will be the same,
-                editions and all.  Destruction of the resource will cause a new resource
-                to be created in getImageResource().
-
-        dealocateResource()
-                This destroys the image resource variable, freeing up memory.  The image
-                will automatically be recreated when getImageResource is executed.
-*/
-class floIcon {
-        /*
-         * $images is an associative array of offset integer => floIconImage object
-         */
-        var $images; // Array of floIconImage objects.
-        var $updated = false;
-        function floIcon() {
-                $this->images = array();
-        }
-        function countImages() {
-                return count($this->images);
-        }
-        function getBestImage($height = 32, $width = 32) {
-                $best = false;
-                $bestEntry = array();
-                $secondBest = false;
-                $secondBestEntry = array();
-                foreach ($this->images as $key => $image) {
-                        $entry = $image->getEntry();
-                        $header = $image->getHeader();
-                        if (!@$entry["BitCount"]) {
-                                $entry["BitCount"] = $header["BitCount"];
-                        }
-                        if ($entry["Height"] == $height && $entry["Width"] == $width && $entry["BitCount"] == 32) {
-                                return $image->getImageResource();
-                        } elseif ($entry["Height"] == $height && $entry["Width"] == $width && $entry["BitCount"] > min(4, @$bestEntry["BitCount"])) {
-                                $best = $image;
-                                $bestEntry = $entry;
-                        } elseif (
-                                !$secondBest or
-                                $entry["Height"] >= $secondBestEntry["Height"] &&
-                                $entry["Width"] >= $secondBestEntry["Width"] &&
-                                $secondBestEntry["BitCount"] >= $secondBestEntry["BitCount"] and
-                                (
-                                        $entry["Height"] <= 64 && $entry["Height"] > $secondBestEntry["Height"] and
-                                        $entry["Height"] > 64 && $entry["Height"] < $secondBestEntry["Height"]
-                                ) ||
-                                (
-                                        $entry["Width"] <= 64 && $entry["Width"] > $secondBestEntry["Width"] and
-                                        $entry["Width"] > 64 && $entry["Width"] < $secondBestEntry["Width"]
-                                ) ||
-                                $secondBestEntry["BitCount"] > $secondBestEntry["BitCount"]
-                                ) {
-                                $secondBest = $image;
-                                $secondBestEntry = $entry;
-                        }
-                }
-                if ($best) {
-                        return $best->getImageResource();
-                } elseif ($secondBest) {
-                        if ($secondBestEntry["Width"] != $width || $secondBestEntry["Height"] != $height) {
-                                $imageResource = $secondBest->getImageResource();
-                                $newImageResource = imagecreatetruecolor($width, $height);
-                                imagesavealpha($newImageResource, true);
-                                imagealphablending($newImageResource, false);
-                                imagecopyresampled($newImageResource, $imageResource, 0, 0, 0, 0, $width, $height, $secondBestEntry["Width"], $secondBestEntry["Height"]);
-                                $this->addImage($newImageResource, 32);
-                                return $newImageResource;
-                        } else {
-                                return $secondBest->getImageResource();
-                        }
-                }
-        }
-        /*
-         * readICO merges the icon images from the file to the current list
-         */
-        function readICO($file, $offset = 0) {
-                if (file_exists($file) && filesize($file) > 0 && $filePointer = fopen($file, "r")) {
-                        fseek($filePointer, $offset);
-                        $header = unpack("SReserved/SType/SCount", fread($filePointer, 6));
-                        for ($t = 0; $t < $header["Count"]; $t++) {
-                                $newImage = new floIconImage();
-                                if ($newImage->readImageFromICO($filePointer, 6 + ($t * 16))) {
-                                                                                         $this->images[] = $newImage;
-                                                                                 }
-                        }
-                        fclose($filePointer);
-                }
-        }
-        function sortImagesBySize() {
-                usort($this->images, array("floIcon", "_cmpObj"));
-        }
-        function formatICO($offset = 0) {
-                $this->updated = false;
-                $output = "";
-                $output .= pack("SSS", 0, 1, count($this->images));
-                $output_images = "";
-                foreach ($this->images as $image) {
-                        $newImageOffset = $offset + // Whatever offset we've been given.
-                                6 // Header.
-                                + (count($this->images) * 16) // Entries.
-                                + strlen($output_images);
-                        if ($newImageOffset > pow(256, 4) /* 4 bytes available for position */ ) {
-                                return false;
-                        }
-                        $output .= $image->formatEntryForIco($newImageOffset); // The images already in there.
-                        $output_images .= $image->formatImageForIco();
-                }
-                return $output.$output_images;
-        }
-        function _cmpObj($a, $b) {
-                $aSize = $a->getSize();
-                $bSize = $b->getSize();
-                if ($aSize == $bSize) {
-                        return 0;
-                }
-                return ($aSize > $bSize)?1:-1;
-        }
-
-        function addImage($imageResource, $desiredBitCount = 1, $pngIfWidthExceeds = 48) {
-                $this->updated = true;
-                $newImage = new floIconImage();
-                $newImage->setImageResource($imageResource, $desiredBitCount, $pngIfWidthExceeds);
-                $this->images[] = $newImage;
-        }
-        function getImage($offset) {
-                if (isset($this->images[$offset])) {
-                        return $this->images[$offset]->getImageResource();
-                } else {
-                        return false;
-                }
-        }
-        /*
-         * getSize computes the
-         */
-        function getSize() {
-                // Compute headers.
-                $computedSize = 6; // Always 6 bytes.
-                // Add image entry headers
-                $computedSize += count($this->images) * 16; // Entry headers are always 16 bytes.
-                foreach ($this->images as $image) {
-                        $computedSize += $image->getSize() + $image->getHeaderSize(); // getSize does not include the header.
-                }
-        }
-}
-class floIconImage {
-        var $_imageResource = null;
-        var $_entry = "";
-        var $_entryIconFormat = "";
-        var $_header = "";
-        var $_headerIconFormat = "";
-        var $_imageIconFormat = ""; // Includes palette and mask.
-        function formatEntryForIco($offset) {
-                // Format the entry, this has to be done here because we need the offset to get the full information.
-                $this->_entry["FileOffset"] = $offset;
-                $this->_entryIconFormat = pack("CCCCSSLL",
-                        $this->_entry["Width"]>=256?0:$this->_entry["Width"],
-                        $this->_entry["Height"]>=256?0:$this->_entry["Height"],
-                        $this->_entry["ColorCount"],
-                        $this->_entry["Reserved"],
-                        $this->_entry["Planes"],
-                        $this->_entry["BitCount"],
-                        $this->_entry["SizeInBytes"],
-                        $this->_entry["FileOffset"]
-                );
-                return $this->_entryIconFormat;
-        }
-        function formatImageForIco() {
-                // Format the entry, this has to be done here because we need the offset to get the full information.
-                return ($this->_headerIconFormat.$this->_imageIconFormat);
-        }
-
-        // Will move $bitCount UP to $desiredBitCount if $bitCount is found to be less than it.
-        function setImageResource($imageResource, $desiredBitCount = 1, $pngIfWidthExceeds = 48) {
-                imagesavealpha($imageResource, true);
-                imagealphablending($imageResource, false);
-                $height = imagesy($imageResource);
-                $width = imagesx($imageResource);
-
-                // Parse resource to determine header and icon format
-
-                // Find Palette information
-                $is_32bit = false; // Start with an assumption and get proven wrong.
-                $hasTransparency = 0;
-                $blackColor = false;
-                $bitCount = 0;
-                $realPalette = array();
-                $realIndexPalette = array();
-                for ($x = 0; $x < $width && !$is_32bit; $x++) {
-                        for ($y = 0; $y < $height && !$is_32bit; $y++) {
-                                $colorIndex = imagecolorat($imageResource, $x, $y);
-                                $color = imagecolorsforindex($imageResource, $colorIndex);
-                                if ($color["alpha"] == 0) {
-                                        // No point continuing if there's more than 256 colors or it's 32bit.
-                                        if (count($realPalette) < 257 && !$is_32bit) {
-                                                $inRealPalette = false;
-                                                foreach($realPalette as $realPaletteKey => $realPaletteColor) {
-                                                        if (
-                                                                $color["red"] == $realPaletteColor["red"] and
-                                                                $color["green"] == $realPaletteColor["green"] and
-                                                                $color["blue"] == $realPaletteColor["blue"]
-                                                        ) {
-                                                                $inRealPalette = $realPaletteKey;
-                                                                break;
-                                                        }
-                                                }
-                                                if ($inRealPalette === false) {
-                                                        $realIndexPalette[$colorIndex] = count($realPalette);
-                                                        if (
-                                                                $blackColor === false and
-                                                                $color["red"] == 0 and
-                                                                $color["green"] == 0 and
-                                                                $color["blue"] == 0
-                                                        ) {
-                                                                $blackColor = count($realPalette);
-                                                        }
-                                                        $realPalette[] = $color;
-                                                } else {
-                                                        $realIndexPalette[$colorIndex] = $inRealPalette;
-                                                }
-                                        }
-                                } else {
-                                        $hasTransparency = 1;
-                                }
-                                if ($color["alpha"] != 0 && $color["alpha"] != 127) {
-                                        $is_32bit = true;
-                                }
-                        }
-                }
-                if ($is_32bit) {
-                        $colorCount = 0;
-                        $bitCount = 32;
-                } else {
-                        if ($hasTransparency && $blackColor === false) {
-                                // We need a black color to facilitate transparency.  Unfortunately, this can
-                                // increase the palette size by 1 if there's no other black color.
-                                $blackColor = count($realPalette);
-                                $color = array(
-                                        "red" => 0,
-                                        "blue" => 0,
-                                        "green" => 0,
-                                        "alpha" => 0
-                                );
-                                $realPalette[] = $color;
-                        }
-                        $colorCount = count($realPalette);
-                        if ($colorCount > 256 || $colorCount == 0) {
-                                $bitCount = 24;
-                        } elseif ($colorCount > 16) {
-                                $bitCount = 8;
-                                // 8 bit
-                        } elseif ($colorCount > 2) {
-                                $bitCount = 4;
-                                // 4 bit
-                        } else {
-                                $bitCount = 1;
-                                // 1 bit
-                        }
-                        if ($desiredBitCount > $bitCount) {
-                                $bitCount = $desiredBitCount;
-                        }
-                        switch ($bitCount) {
-                                case 24:
-                                        $colorCount = 0;
-                                        break;
-                                case 8:
-                                        $colorCount = 256;
-                                        break;
-                                case 4:
-                                        $colorCount = 16;
-                                        break;
-                                case 1:
-                                        $colorCount = 2;
-                                        break;
-                        }
-                }
-                // Create $this->_imageIconFormat...
-                $this->_imageIconFormat = "";
-                if ($bitCount < 24) {
-                        $iconPalette = array();
-                        // Save Palette
-                        foreach ($realIndexPalette as $colorIndex => $paletteIndex) {
-                                $color = $realPalette[$paletteIndex];
-                                $this->_imageIconFormat .= pack("CCCC", $color["blue"], $color["green"], $color["red"], 0);
-                        }
-                        while (strlen($this->_imageIconFormat) < $colorCount * 4) {
-                                $this->_imageIconFormat .= pack("CCCC", 0, 0, 0, 0);
-                        }
-                        // Save Each Pixel as Palette Entry
-                        $byte = 0; // For $bitCount < 8 math
-                        $bitPosition = 0; // For $bitCount < 8 math
-                        for ($y = 0; $y < $height; $y++) {
-                                for ($x = 0; $x < $width; $x++) {
-                                        $color = imagecolorat($imageResource, $x, $height-$y-1);
-                                        if (isset($realIndexPalette[$color])) {
-                                                $color = $realIndexPalette[$color];
-                                        } else {
-                                                $color = $blackColor;
-                                        }
-
-                                        if ($bitCount < 8) {
-                                                $bitPosition += $bitCount;
-                                                $colorAdjusted = $color * pow(2, 8 - $bitPosition);
-                                                $byte += $colorAdjusted;
-                                                if ($bitPosition == 8) {
-                                                        $this->_imageIconFormat .= chr($byte);
-                                                        $bitPosition = 0;
-                                                        $byte = 0;
-                                                }
-                                        } else {
-                                                $this->_imageIconFormat .= chr($color);
-                                        }
-                                }
-                                // Each row ends with dumping the remaining bits and filling up to the 32bit line with 0's.
-                                if ($bitPosition) {
-                                        $this->_imageIconFormat .= chr($byte);
-                                        $bitPosition = 0;
-                                        $byte = 0;
-                                }
-                                if (strlen($this->_imageIconFormat)%4) $this->_imageIconFormat .= str_repeat(chr(0), 4-(strlen($this->_imageIconFormat)%4));
-                        }
-                } else {
-                        // Save each pixel.
-                        for ($y = 0; $y < $height; $y++) {
-                                for ($x = 0; $x < $width; $x++) {
-                                        $color = imagecolorat($imageResource, $x, $height-$y-1);
-                                        $color = imagecolorsforindex($imageResource, $color);
-                                        if ($bitCount == 24) {
-                                                if ($color["alpha"]) {
-                                                        $this->_imageIconFormat .= pack("CCC", 0, 0, 0);
-                                                } else {
-                                                        $this->_imageIconFormat .= pack("CCC", $color["blue"], $color["green"], $color["red"]);
-                                                }
-                                        } else {
-                                                $color["alpha"] = round((127-$color["alpha"]) / 127 * 255);
-                                                $this->_imageIconFormat .= pack("CCCC", $color["blue"], $color["green"], $color["red"], $color["alpha"]);
-                                        }
-                                }
-                                if (strlen($this->_imageIconFormat)%4) $this->_imageIconFormat .= str_repeat(chr(0), 4-(strlen($this->_imageIconFormat)%4));
-                        }
-                }
-                // save AND map (transparency)
-                $byte = 0; // For $bitCount < 8 math
-                $bitPosition = 0; // For $bitCount < 8 math
-                for ($y = 0; $y < $height; $y++) {
-                        for ($x = 0; $x < $width; $x++) {
-                                if ($bitCount < 32) {
-                                        $color = imagecolorat($imageResource, $x, $height-$y-1);
-                                        $color = imagecolorsforindex($imageResource, $color);
-                                        $color = $color["alpha"] == 127?1:0;
-                                } else {
-                                        $color = 0;
-                                }
-
-                                $bitPosition += 1;
-                                $colorAdjusted = $color * pow(2, 8 - $bitPosition);
-                                $byte += $colorAdjusted;
-                                if ($bitPosition == 8) {
-                                        $this->_imageIconFormat .= chr($byte);
-                                        $bitPosition = 0;
-                                        $byte = 0;
-                                }
-                        }
-                        // Each row ends with dumping the remaining bits and filling up to the 32bit line with 0's.
-                        if ($bitPosition) {
-                                $this->_imageIconFormat .= chr($byte);
-                                $bitPosition = 0; // For $bitCount < 8 math
-                                $byte = 0;
-                        }
-                        while (strlen($this->_imageIconFormat)%4) {
-                                $this->_imageIconFormat .= chr(0);
-                        }
-                }
-                if ($colorCount >= 256) {
-                        $colorCount = 0;
-                }
-                // Create header information...
-                $this->_header = array(
-                        "Size" => 40,
-                        "Width" => $width,
-                        "Height" => $height*2,
-                        "Planes" => 1,
-                        "BitCount" => $bitCount,
-                        "Compression" => 0,
-                        "ImageSize" => strlen($this->_imageIconFormat),
-                        "XpixelsPerM" => 0,
-                        "YpixelsPerM" => 0,
-                        "ColorsUsed" => $colorCount,
-                        "ColorsImportant" => 0,
-                );
-                $this->_headerIconFormat = pack("LLLSSLLLLLL",
-                        $this->_header["Size"],
-                        $this->_header["Width"],
-                        $this->_header["Height"],
-
-                        $this->_header["Planes"],
-                        $this->_header["BitCount"],
-
-                        $this->_header["Compression"],
-                        $this->_header["ImageSize"],
-                        $this->_header["XpixelsPerM"],
-                        $this->_header["YpixelsPerM"],
-                        $this->_header["ColorsUsed"],
-                        $this->_header["ColorsImportant"]
-                );
-                $this->_entry = array(
-                        "Width" => $width,
-                        "Height" => $height,
-                        "ColorCount" => $colorCount,
-                        "Reserved" => 0,
-                        "Planes" => 1,
-                        "BitCount" => $bitCount,
-                        "SizeInBytes" => $this->_header["Size"] + $this->_header["ImageSize"],
-                        "FileOffset" => -1,
-                );
-                $this->_entryIconFormat = ""; // This won't get set until it's needed with the offset.
-                $this->_imageResource = $imageResource;
-
-                // Make png if width exceeds limit for old ico style
-                if ($width > $pngIfWidthExceeds) {
-                        // I wish there were a better way to get the info than this.  If anyone needs a version that doesn't use OB, I can have one that creates a TMP file.
-                        ob_start();
-                        imagepng($imageResource);
-                        $imageAsPng = ob_get_contents();
-                        ob_end_clean();
-                        $this->_headerIconFormat = "";
-                        $this->_imageIconFormat = $imageAsPng;
-                }
-
-
-        }
-        function _createImageResource() {
-                if ($newImage = @imagecreatefromstring($this->_headerIconFormat.$this->_imageIconFormat)) {
-                        // Vista supports PNG.
-                        $this->_headerIconFormat = "";
-                        $this->_imageIconFormat = $this->_headerIconFormat.$this->_imageIconFormat;
-                        imagesavealpha($newImage, true);
-                        imagealphablending($newImage, false);
-                        $this->_imageResource = $newImage;
-                } elseif ($this->_entry["Height"] <= 1024 && $this->_entry["Width"] <= 1024) {
-                        $newImage = imagecreatetruecolor($this->_entry["Width"], $this->_entry["Height"]);
-                        imagesavealpha($newImage, true);
-                        imagealphablending($newImage, false);
-                        $readPosition = 0;
-                        $palette = array();
-                        if ($this->_header["BitCount"] < 24) {
-                                // Read Palette for low bitcounts
-                                $colorsInPalette = $this->_header["ColorsUsed"]?$this->_header["ColorsUsed"]:$this->_entry["ColorCount"];
-                                for ($t = 0; $t < pow(2, $this->_header["BitCount"]); $t++) {
-                                        $blue = ord($this->_imageIconFormat[$readPosition++]);
-                                        $green = ord($this->_imageIconFormat[$readPosition++]);
-                                        $red = ord($this->_imageIconFormat[$readPosition++]);
-                                        $readPosition++; // Unused "Reserved" value.
-                                                $existingPaletteEntry = imagecolorexactalpha($newImage, $red, $green, $blue, 0);
-                                                if ($existingPaletteEntry >= 0) {
-                                                        $palette[] = $existingPaletteEntry;
-                                                } else {
-                                                        $palette[] = imagecolorallocatealpha($newImage, $red, $green, $blue, 0);
-                                                }
-                                }
-                                // XOR
-                                for ($y = 0; $y < $this->_entry["Height"]; $y++) {
-                                        $colors = array();
-                                        for ($x = 0; $x < $this->_entry["Width"]; $x++) {
-                                                if ($this->_header["BitCount"] < 8) {
-                                                        $color = array_shift($colors);
-                                                        if (is_null($color)) {
-                                                                $byte = ord($this->_imageIconFormat[$readPosition++]);
-                                                                $tmp_color = 0;
-                                                                for ($t = 7; $t >= 0; $t--) {
-                                                                        $bit_value = pow(2, $t);
-                                                                        $bit = floor($byte / $bit_value);
-                                                                        $byte = $byte - ($bit * $bit_value);
-                                                                        $tmp_color += $bit * pow(2, $t%$this->_header["BitCount"]);
-                                                                        if ($t%$this->_header["BitCount"] == 0) {
-                                                                                array_push($colors, $tmp_color);
-                                                                                $tmp_color = 0;
-                                                                        }
-                                                                }
-                                                                $color = array_shift($colors);
-                                                        }
-                                                } else {
-                                                        $color = ord($this->_imageIconFormat[$readPosition++]);
-                                                }
-                                                imagesetpixel($newImage, $x, $this->_entry["Height"]-$y-1, $palette[$color]) or die("can't set pixel");
-                                        }
-                                        // All rows end on the 32 bit
-                                        if ($readPosition%4) $readPosition += 4-($readPosition%4);
-                                }
-                        } else {
-                                // BitCount >= 24, No Palette.
-                                // marking position because some icons mark all pixels transparent when using an AND map.
-                                $markPosition = $readPosition;
-                                $retry = true;
-                                $ignoreAlpha = false;
-                                while ($retry) {
-                                        $alphas = array();
-                                        $retry = false;
-                                        for ($y = 0; $y < $this->_entry["Height"] and !$retry; $y++) {
-                                                for ($x = 0; $x < $this->_entry["Width"] and !$retry; $x++) {
-                                                        $blue = ord($this->_imageIconFormat[$readPosition++]);
-                                                        $green = ord($this->_imageIconFormat[$readPosition++]);
-                                                        $red = ord($this->_imageIconFormat[$readPosition++]);
-                                                        if ($this->_header["BitCount"] < 32) {
-                                                                $alpha = 0;
-                                                        } elseif($ignoreAlpha) {
-                                                                $alpha = 0;
-                                                                $readPosition++;
-                                                        } else {
-                                                                $alpha = ord($this->_imageIconFormat[$readPosition++]);
-                                                                $alphas[$alpha] = $alpha;
-                                                                $alpha = 127-round($alpha/255*127);
-                                                        }
-                                                        $paletteEntry = imagecolorexactalpha($newImage, $red, $green, $blue, $alpha);
-                                                        if ($paletteEntry < 0) {
-                                                                $paletteEntry = imagecolorallocatealpha($newImage, $red, $green, $blue, $alpha);
-                                                        }
-                                                        imagesetpixel($newImage, $x, $this->_entry["Height"]-$y-1, $paletteEntry) or die("can't set pixel");
-                                                }
-                                                if ($readPosition%4) $readPosition += 4-($readPosition%4);
-                                        }
-                                        if ($this->_header["BitCount"] == 32 && isset($alphas[0]) && count($alphas) == 1) {
-                                                $retry = true;
-                                                $readPosition = $markPosition;
-                                                $ignoreAlpha = true;
-                                        }
-                                }
-
-                        }
-                        // AND map
-                        if ($this->_header["BitCount"] < 32 || $ignoreAlpha) {
-                                // Bitcount == 32, No AND (if using alpha).
-                                $palette[-1] = imagecolorallocatealpha($newImage, 0, 0, 0, 127);
-                                imagecolortransparent($newImage, $palette[-1]);
-                                for ($y = 0; $y < $this->_entry["Height"]; $y++) {
-                                        $colors = array();
-                                        for ($x = 0; $x < $this->_entry["Width"]; $x++) {
-                                                $color = array_shift($colors);
-                                                if (is_null($color)) {
-                                                        $byte = ord($this->_imageIconFormat[$readPosition++]);
-                                                        $tmp_color = 0;
-                                                        for ($t = 7; $t >= 0; $t--) {
-                                                                $bit_value = pow(2, $t);
-                                                                $bit = floor($byte / $bit_value);
-                                                                $byte = $byte - ($bit * $bit_value);
-                                                                array_push($colors, $bit);
-                                                        }
-                                                        $color = array_shift($colors);
-                                                }
-                                                if ($color) {
-                                                        imagesetpixel($newImage, $x, $this->_entry["Height"]-$y-1, $palette[-1]) or die("can't set pixel");
-                                                }
-                                        }
-                                        // All rows end on the 32 bit.
-                                        if ($readPosition%4) $readPosition += 4-($readPosition%4);
-                                }
-                        }
-                        if ($this->_header["BitCount"] < 24) {
-                                imagetruecolortopalette($newImage, true, pow(2, $this->_header["BitCount"]));
-                        }
-                }
-                $this->_imageResource = $newImage;
-        }
-        // this function expects that $_entry, $_header and $_imageIconFormat have already been read, specifically from readImageFromICO.
-        // Don't call this function except from there.
-        function readImageFromICO($filePointer, $entryOffset) {
-                $tmpPosition = ftell($filePointer); // So any other applications won't loose their position.
-                // Get the entry.
-                fseek($filePointer, $entryOffset);
-                $this->_entryIconFormat = fread($filePointer, 16);
-                $this->_entry = unpack("CWidth/CHeight/CColorCount/CReserved/SPlanes/SBitCount/LSizeInBytes/LFileOffset", $this->_entryIconFormat);
-
-                                        if ($this->_entry["SizeInBytes"] > 16384)
-                                                return false;
-
-                // Position the file pointer.
-                fseek($filePointer, $this->_entry["FileOffset"]);
-
-                // Get the header.
-                $this->_headerIconFormat = fread($filePointer, 40);
-        $this->_header = unpack("LSize/LWidth/LHeight/SPlanes/SBitCount/LCompression/LImageSize/LXpixelsPerM/LYpixelsPerM/LColorsUsed/LColorsImportant", $this->_headerIconFormat);
-
-                // Get the image.
-                $this->_imageIconFormat = @fread($filePointer, $this->_entry["SizeInBytes"] - strlen($this->_headerIconFormat));
-                fseek($filePointer, $tmpPosition); // So any other applications won't loose their position.
-
-                if ($newImage = @imagecreatefromstring($this->_headerIconFormat.$this->_imageIconFormat)) {
-                        // This is a PNG, the supposed header information is useless.
-                        $this->_header = array (
-                                "Size" => 0,
-                                "Width" => imagesx($newImage),
-                                "Height" => imagesy($newImage) * 2,
-                                "Planes" => 0,
-                                "BitCount" => 32,
-                                "Compression" => 0,
-                                "ImageSize" => strlen($this->_imageIconFormat),
-                                "XpixelsPerM" => 0,
-                                "YpixelsPerM" => 0,
-                                "ColorsUsed" => 0,
-                                "ColorsImportant" => 0,
-                        );
-                        imagedestroy($newImage);
-                }
-
-                // Support for larger images requires entry marked as 0.
-                if ($this->_entry["Width"] == 0) {
-                        $this->_entry["Width"] = $this->_header["Width"];
-                }
-                if ($this->_entry["Height"] == 0) {
-                        $this->_entry["Height"] = $this->_header["Height"]/2;
-                                        }
-
-                                        return true;
-        }
-        function getHeader() {
-                return $this->_header;
-        }
-        function getEntry() {
-                return $this->_entry;
-        }
-        function floIconImage() {
-        }
-        function getHeaderSize() {
-                return strlen($this->_headerIconFormat);
-        }
-        function getSize() {
-                return strlen($this->_imageIconFormat);
-        }
-        function getImageResource() {
-                if (!$this->_imageResource) $this->_createImageResource();
-                return $this->_imageResource;
-        }
-        function dealocateResource() {
-                @imagedestroy($this->_imageResource);
-                $this->_imageResource = null;
-        }
-}
-?>
index c23fc175d2227c58fb345bd9084d52bdd3577a05..3cb27eba0fa781c1d04a8e3769a37e46910ec488 100644 (file)
Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ
index be05561c4e74e49f0a1e028028bd8af9ebe544c5..27610fdcd413ec99bb2b4cbc072130aa929b73c0 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "Project-Id-Version: Tiny Tiny RSS\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-05-15 09:45+0400\n"
-"PO-Revision-Date: 2013-05-01 11:51+0100\n"
+"PO-Revision-Date: 2013-05-24 09:49+0100\n"
 "Last-Translator: Raphael Rochet <raphael@rri.fr>\n"
 "Language-Team: French\n"
 "Language: fr_FR\n"
@@ -54,49 +54,39 @@ msgstr "Au bout de 3 mois"
 msgid "Default interval"
 msgstr "Fréquence de mise Ã  jour par défaut"
 
-#: backend.php:83
-#: backend.php:93
+#: backend.php:83 backend.php:93
 msgid "Disable updates"
 msgstr "Désactiver les mises Ã  jour"
 
-#: backend.php:84
-#: backend.php:94
+#: backend.php:84 backend.php:94
 msgid "Each 15 minutes"
 msgstr "Toutes les 15 minutes"
 
-#: backend.php:85
-#: backend.php:95
+#: backend.php:85 backend.php:95
 msgid "Each 30 minutes"
 msgstr "Toutes les 30 minutes"
 
-#: backend.php:86
-#: backend.php:96
+#: backend.php:86 backend.php:96
 msgid "Hourly"
 msgstr "Toutes les heures"
 
-#: backend.php:87
-#: backend.php:97
+#: backend.php:87 backend.php:97
 msgid "Each 4 hours"
 msgstr "Toutes les 4 heures"
 
-#: backend.php:88
-#: backend.php:98
+#: backend.php:88 backend.php:98
 msgid "Each 12 hours"
 msgstr "Toutes les 12 heures"
 
-#: backend.php:89
-#: backend.php:99
+#: backend.php:89 backend.php:99
 msgid "Daily"
 msgstr "Une fois par jour"
 
-#: backend.php:90
-#: backend.php:100
+#: backend.php:90 backend.php:100
 msgid "Weekly"
 msgstr "Une fois par semaine"
 
-#: backend.php:103
-#: classes/pref/users.php:119
-#: classes/pref/system.php:51
+#: backend.php:103 classes/pref/users.php:119 classes/pref/system.php:51
 msgid "User"
 msgstr "Utilisateur"
 
@@ -109,12 +99,22 @@ msgid "Administrator"
 msgstr "Administrateur"
 
 #: errors.php:9
-msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it."
-msgstr "Ce programme nécessite l'utilisation de XmlHttpRequest pour fonctionner correctement. Votre navigateur web semble ne pas intégrer cette fonctionnalité."
+msgid ""
+"This program requires XmlHttpRequest to function properly. Your browser "
+"doesn't seem to support it."
+msgstr ""
+"Ce programme nécessite l'utilisation de XmlHttpRequest pour fonctionner "
+"correctement. Votre navigateur web semble ne pas intégrer cette "
+"fonctionnalité."
 
 #: errors.php:12
-msgid "This program requires cookies to function properly. Your browser doesn't seem to support them."
-msgstr "Ce programme nécessite l'utilisation de cookies pour fonctionner correctement. Votre navigateur web semble ne pas intégrer cette fonctionnalité."
+msgid ""
+"This program requires cookies to function properly. Your browser doesn't "
+"seem to support them."
+msgstr ""
+"Ce programme nécessite l'utilisation de cookies pour fonctionner "
+"correctement. Votre navigateur web semble ne pas intégrer cette "
+"fonctionnalité."
 
 #: errors.php:15
 msgid "Backend sanity check failed."
@@ -125,8 +125,12 @@ msgid "Frontend sanity check failed."
 msgstr "Le test de l'interface a Ã©choué."
 
 #: errors.php:19
-msgid "Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please update&lt;/a&gt;."
-msgstr "Version non valable pour le schéma de la base de données. &lt;a href='db-updater.php'&gt;Veuillez le mettre Ã  jour&lt;/a&gt;."
+msgid ""
+"Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please "
+"update&lt;/a&gt;."
+msgstr ""
+"Version non valable pour le schéma de la base de données. &lt;a href='db-"
+"updater.php'&gt;Veuillez le mettre Ã  jour&lt;/a&gt;."
 
 #: errors.php:21
 msgid "Request not authorized."
@@ -137,58 +141,47 @@ msgid "No operation to perform."
 msgstr "Aucune opération Ã  effectuer."
 
 #: errors.php:25
-msgid "Could not display feed: query failed. Please check label match syntax or local configuration."
-msgstr "Impossible d'afficher le flux : la requête n'a pas abouti. Veuillez vérifier la syntaxe de correspondance d'étiquette ou la configuration locale."
+msgid ""
+"Could not display feed: query failed. Please check label match syntax or "
+"local configuration."
+msgstr ""
+"Impossible d'afficher le flux : la requête n'a pas abouti. Veuillez vérifier "
+"la syntaxe de correspondance d'étiquette ou la configuration locale."
 
 #: errors.php:27
 msgid "Denied. Your access level is insufficient to access this page."
-msgstr "Accès refusé. Vous n'avez pas les permissions nécessaires pour accéder Ã  cette page."
+msgstr ""
+"Accès refusé. Vous n'avez pas les permissions nécessaires pour accéder Ã  "
+"cette page."
 
 #: errors.php:29
 msgid "Configuration check failed"
 msgstr "Échec du test de configuration"
 
 #: errors.php:31
-msgid "Your version of MySQL is not currently supported. Please see official site for more information."
-msgstr "Votre version de MySQL n'est pas supportée actuellement. Veuillez consulter le site officiel pour plus d'informations."
+msgid ""
+"Your version of MySQL is not currently supported. Please see official site "
+"for more information."
+msgstr ""
+"Votre version de MySQL n'est pas supportée actuellement. Veuillez consulter "
+"le site officiel pour plus d'informations."
 
 #: errors.php:35
 msgid "SQL escaping test failed, check your database and PHP configuration"
-msgstr "Le test d'échappement SQL a Ã©choué, veuillez vérifier votre configuration de base de données et de PHP"
-
-#: index.php:128
-#: index.php:145
-#: index.php:265
-#: prefs.php:97
-#: classes/backend.php:5
-#: classes/pref/labels.php:296
-#: classes/pref/filters.php:678
-#: classes/pref/feeds.php:1372
-#: js/feedlist.js:128
-#: js/feedlist.js:441
-#: js/functions.js:446
-#: js/functions.js:784
-#: js/functions.js:1194
-#: js/functions.js:1330
-#: js/functions.js:1642
-#: js/prefs.js:86
-#: js/prefs.js:576
-#: js/prefs.js:666
-#: js/prefs.js:867
-#: js/prefs.js:1454
-#: js/prefs.js:1507
-#: js/prefs.js:1566
-#: js/prefs.js:1583
-#: js/prefs.js:1599
-#: js/prefs.js:1619
-#: js/prefs.js:1792
-#: js/prefs.js:1808
-#: js/prefs.js:1826
-#: js/tt-rss.js:507
-#: js/tt-rss.js:524
-#: js/viewfeed.js:821
-#: js/viewfeed.js:1250
-#: plugins/import_export/import_export.js:17
+msgstr ""
+"Le test d'échappement SQL a Ã©choué, veuillez vérifier votre configuration de "
+"base de données et de PHP"
+
+#: index.php:128 index.php:145 index.php:265 prefs.php:97
+#: classes/backend.php:5 classes/pref/labels.php:296
+#: classes/pref/filters.php:678 classes/pref/feeds.php:1372 js/feedlist.js:128
+#: js/feedlist.js:441 js/functions.js:446 js/functions.js:784
+#: js/functions.js:1194 js/functions.js:1330 js/functions.js:1642
+#: js/prefs.js:86 js/prefs.js:576 js/prefs.js:666 js/prefs.js:867
+#: js/prefs.js:1454 js/prefs.js:1507 js/prefs.js:1566 js/prefs.js:1583
+#: js/prefs.js:1599 js/prefs.js:1619 js/prefs.js:1792 js/prefs.js:1808
+#: js/prefs.js:1826 js/tt-rss.js:507 js/tt-rss.js:524 js/viewfeed.js:821
+#: js/viewfeed.js:1250 plugins/import_export/import_export.js:17
 #: plugins/updater/updater.js:17
 msgid "Loading, please wait..."
 msgstr "Chargement en cours, veuillez patienter..."
@@ -209,21 +202,15 @@ msgstr "Adaptatif"
 msgid "All Articles"
 msgstr "Tous les articles"
 
-#: index.php:167
-#: include/functions.php:2008
-#: classes/feeds.php:98
+#: index.php:167 include/functions.php:2008 classes/feeds.php:98
 msgid "Starred"
 msgstr "Remarquables"
 
-#: index.php:168
-#: include/functions.php:2009
-#: classes/feeds.php:99
+#: index.php:168 include/functions.php:2009 classes/feeds.php:99
 msgid "Published"
 msgstr "Publiés"
 
-#: index.php:169
-#: classes/feeds.php:85
-#: classes/feeds.php:97
+#: index.php:169 classes/feeds.php:85 classes/feeds.php:97
 msgid "Unread"
 msgstr "Non lus"
 
@@ -259,12 +246,8 @@ msgstr "Les plus anciens en premier"
 msgid "Title"
 msgstr "Titre"
 
-#: index.php:185
-#: index.php:233
-#: include/functions.php:1998
-#: classes/feeds.php:103
-#: classes/feeds.php:424
-#: js/FeedTree.js:128
+#: index.php:185 index.php:233 include/functions.php:1998
+#: classes/feeds.php:103 classes/feeds.php:424 js/FeedTree.js:128
 #: js/FeedTree.js:156
 msgid "Mark as read"
 msgstr "Marquer comme lu"
@@ -305,8 +288,7 @@ msgstr "Rechercher..."
 msgid "Feed actions:"
 msgstr "Actions sur ce flux :"
 
-#: index.php:228
-#: classes/handler/public.php:562
+#: index.php:228 classes/handler/public.php:562
 msgid "Subscribe to feed..."
 msgstr "S'abonner au flux..."
 
@@ -318,9 +300,7 @@ msgstr "Modifier ce flux..."
 msgid "Rescore feed"
 msgstr "Recalculer le score du flux"
 
-#: index.php:231
-#: classes/pref/feeds.php:746
-#: classes/pref/feeds.php:1327
+#: index.php:231 classes/pref/feeds.php:746 classes/pref/feeds.php:1327
 #: js/PrefFeedTree.js:73
 msgid "Unsubscribe"
 msgstr "Se désabonner"
@@ -337,8 +317,7 @@ msgstr "Masquer/afficher les flux lus"
 msgid "Other actions:"
 msgstr "Autres actions :"
 
-#: index.php:236
-#: include/functions.php:1984
+#: index.php:236 include/functions.php:1984
 msgid "Toggle widescreen mode"
 msgstr "Basculer le mode Ã©cran large"
 
@@ -362,9 +341,7 @@ msgstr "Aide sur les raccourcis clavier"
 msgid "Logout"
 msgstr "Déconnexion"
 
-#: prefs.php:33
-#: prefs.php:115
-#: include/functions.php:2011
+#: prefs.php:33 prefs.php:115 include/functions.php:2011
 #: classes/pref/prefs.php:440
 msgid "Preferences"
 msgstr "Configuration"
@@ -377,21 +354,16 @@ msgstr "Raccourcis clavier"
 msgid "Exit preferences"
 msgstr "Quitter la configuration"
 
-#: prefs.php:118
-#: classes/pref/feeds.php:106
-#: classes/pref/feeds.php:1253
+#: prefs.php:118 classes/pref/feeds.php:106 classes/pref/feeds.php:1253
 #: classes/pref/feeds.php:1316
 msgid "Feeds"
 msgstr "Flux"
 
-#: prefs.php:121
-#: classes/pref/filters.php:154
+#: prefs.php:121 classes/pref/filters.php:154
 msgid "Filters"
 msgstr "Filtres"
 
-#: prefs.php:124
-#: include/functions.php:1176
-#: include/functions.php:1832
+#: prefs.php:124 include/functions.php:1176 include/functions.php:1832
 #: classes/pref/labels.php:90
 msgid "Labels"
 msgstr "Etiquettes"
@@ -404,36 +376,33 @@ msgstr "Utilisateurs"
 msgid "System"
 msgstr "Système"
 
-#: register.php:184
-#: include/login_form.php:238
+#: register.php:184 include/login_form.php:238
 msgid "Create new account"
 msgstr "Créer un nouveau compte"
 
 #: register.php:190
 msgid "New user registrations are administratively disabled."
-msgstr "L'inscription de nouveaux utilisateurs est désactivée par l'administrateur."
-
-#: register.php:194
-#: register.php:239
-#: register.php:252
-#: register.php:267
-#: register.php:286
-#: register.php:334
-#: register.php:344
-#: register.php:356
-#: classes/handler/public.php:632
-#: classes/handler/public.php:723
-#: classes/handler/public.php:805
-#: classes/handler/public.php:880
-#: classes/handler/public.php:894
-#: classes/handler/public.php:901
+msgstr ""
+"L'inscription de nouveaux utilisateurs est désactivée par l'administrateur."
+
+#: register.php:194 register.php:239 register.php:252 register.php:267
+#: register.php:286 register.php:334 register.php:344 register.php:356
+#: classes/handler/public.php:632 classes/handler/public.php:723
+#: classes/handler/public.php:805 classes/handler/public.php:880
+#: classes/handler/public.php:894 classes/handler/public.php:901
 #: classes/handler/public.php:926
 msgid "Return to Tiny Tiny RSS"
 msgstr "Revenir Ã  Tiny Tiny RSS"
 
 #: register.php:215
-msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent."
-msgstr "Votre mot de passe temporaire va Ãªtre envoyé Ã  l'adresse mail indiquée. Les comptes ne s'étant pas connectés au moins une fois dans les 24 heures qui suivent l'envoi du mail seront supprimés."
+msgid ""
+"Your temporary password will be sent to the specified email. Accounts, which "
+"were not logged in once, are erased automatically 24 hours after temporary "
+"password is sent."
+msgstr ""
+"Votre mot de passe temporaire va Ãªtre envoyé Ã  l'adresse mail indiquée. Les "
+"comptes ne s'étant pas connectés au moins une fois dans les 24 heures qui "
+"suivent l'envoi du mail seront supprimés."
 
 #: register.php:221
 msgid "Desired login:"
@@ -443,13 +412,11 @@ msgstr "Identifiant souhaité :"
 msgid "Check availability"
 msgstr "Vérifier la disponibilité"
 
-#: register.php:226
-#: classes/handler/public.php:763
+#: register.php:226 classes/handler/public.php:763
 msgid "Email:"
 msgstr "Adresse mail :"
 
-#: register.php:229
-#: classes/handler/public.php:768
+#: register.php:229 classes/handler/public.php:768
 msgid "How much is two plus two:"
 msgstr "Combien font 2 plus 2 :"
 
@@ -481,13 +448,9 @@ msgstr "L'inscription de nouveaux utilisateurs est actuellement fermée."
 msgid "Tiny Tiny RSS data update script."
 msgstr "Script de mise Ã  jour des données de Tiny Tiny RSS."
 
-#: include/digest.php:109
-#: include/functions.php:1185
-#: include/functions.php:1733
-#: include/functions.php:1818
-#: include/functions.php:1840
-#: classes/opml.php:416
-#: classes/pref/feeds.php:218
+#: include/digest.php:109 include/functions.php:1185
+#: include/functions.php:1733 include/functions.php:1818
+#: include/functions.php:1840 classes/opml.php:416 classes/pref/feeds.php:218
 msgid "Uncategorized"
 msgstr "Sans catégorie"
 
@@ -502,13 +465,11 @@ msgstr[1] "%d articles archivés"
 msgid "No feeds found."
 msgstr "Aucun flux trouvé."
 
-#: include/functions.php:1174
-#: include/functions.php:1830
+#: include/functions.php:1174 include/functions.php:1830
 msgid "Special"
 msgstr "Spécial"
 
-#: include/functions.php:1681
-#: classes/feeds.php:1097
+#: include/functions.php:1681 classes/feeds.php:1097
 #: classes/pref/filters.php:425
 msgid "All feeds"
 msgstr "Tous les flux"
@@ -525,8 +486,7 @@ msgstr "Articles publiés"
 msgid "Fresh articles"
 msgstr "Nouveaux articles"
 
-#: include/functions.php:1891
-#: include/functions.php:2006
+#: include/functions.php:1891 include/functions.php:2006
 msgid "All articles"
 msgstr "Tous les articles"
 
@@ -586,13 +546,11 @@ msgstr "Article"
 msgid "Toggle starred"
 msgstr "Marquer comme (non) remarquable"
 
-#: include/functions.php:1970
-#: js/viewfeed.js:1911
+#: include/functions.php:1970 js/viewfeed.js:1911
 msgid "Toggle published"
 msgstr "Marquer comme (non) publié"
 
-#: include/functions.php:1971
-#: js/viewfeed.js:1889
+#: include/functions.php:1971 js/viewfeed.js:1889
 msgid "Toggle unread"
 msgstr "Marquer comme (non) lu"
 
@@ -612,13 +570,11 @@ msgstr "Ecarter les articles lus"
 msgid "Open in new window"
 msgstr "Ouvrir dans une nouvelle fenêtre"
 
-#: include/functions.php:1976
-#: js/viewfeed.js:1930
+#: include/functions.php:1976 js/viewfeed.js:1930
 msgid "Mark below as read"
 msgstr "Marquer les articles en-dessous comme lus"
 
-#: include/functions.php:1977
-#: js/viewfeed.js:1924
+#: include/functions.php:1977 js/viewfeed.js:1924
 msgid "Mark above as read"
 msgstr "Marquer les articles au-dessus comme lus"
 
@@ -646,8 +602,7 @@ msgstr "Contracter l'article"
 msgid "Toggle article expansion (combined mode)"
 msgstr "Basculer le développement (mode combiné)"
 
-#: include/functions.php:1985
-#: plugins/embed_original/init.php:31
+#: include/functions.php:1985 plugins/embed_original/init.php:31
 msgid "Toggle embed original"
 msgstr "Basculer l'intégration de l'article original"
 
@@ -679,8 +634,7 @@ msgstr "Inverser la sélection"
 msgid "Deselect everything"
 msgstr "Tout désélectionner"
 
-#: include/functions.php:1993
-#: classes/pref/feeds.php:540
+#: include/functions.php:1993 classes/pref/feeds.php:540
 #: classes/pref/feeds.php:783
 msgid "Feed"
 msgstr "Flux"
@@ -693,14 +647,11 @@ msgstr "Actualiser le flux actif"
 msgid "Un/hide read feeds"
 msgstr "Masquer/afficher les flux lus"
 
-#: include/functions.php:1996
-#: classes/pref/feeds.php:1319
+#: include/functions.php:1996 classes/pref/feeds.php:1319
 msgid "Subscribe to feed"
 msgstr "S'abonner au flux"
 
-#: include/functions.php:1997
-#: js/FeedTree.js:135
-#: js/PrefFeedTree.js:67
+#: include/functions.php:1997 js/FeedTree.js:135 js/PrefFeedTree.js:67
 msgid "Edit feed"
 msgstr "Modifier le flux"
 
@@ -712,8 +663,7 @@ msgstr "Inverser l'ordre des en-têtes"
 msgid "Debug feed update"
 msgstr "Déboguer les mises Ã  jour"
 
-#: include/functions.php:2001
-#: js/FeedTree.js:178
+#: include/functions.php:2001 js/FeedTree.js:178
 msgid "Mark all feeds as read"
 msgstr "Marquer tous les flux comme lus"
 
@@ -737,9 +687,7 @@ msgstr "Aller Ã "
 msgid "Fresh"
 msgstr "Nouveaux"
 
-#: include/functions.php:2010
-#: js/tt-rss.js:457
-#: js/tt-rss.js:642
+#: include/functions.php:2010 js/tt-rss.js:457 js/tt-rss.js:642
 msgid "Tag cloud"
 msgstr "Nuage de tags"
 
@@ -747,13 +695,11 @@ msgstr "Nuage de tags"
 msgid "Other"
 msgstr "Autre"
 
-#: include/functions.php:2013
-#: classes/pref/labels.php:281
+#: include/functions.php:2013 classes/pref/labels.php:281
 msgid "Create label"
 msgstr "Créer une Ã©tiquette"
 
-#: include/functions.php:2014
-#: classes/pref/filters.php:652
+#: include/functions.php:2014 classes/pref/filters.php:652
 msgid "Create filter"
 msgstr "Créer un filtre"
 
@@ -774,47 +720,31 @@ msgstr "Résultats de recherche: %s"
 msgid " - "
 msgstr " - "
 
-#: include/functions.php:3154
-#: include/functions.php:3395
+#: include/functions.php:3154 include/functions.php:3395
 #: classes/article.php:281
 msgid "no tags"
 msgstr "aucun tag"
 
-#: include/functions.php:3164
-#: classes/feeds.php:676
+#: include/functions.php:3164 classes/feeds.php:676
 msgid "Edit tags for this article"
 msgstr "Modifier les tags pour cet article"
 
-#: include/functions.php:3196
-#: classes/feeds.php:628
+#: include/functions.php:3196 classes/feeds.php:628
 msgid "Originally from:"
 msgstr "Origine :"
 
-#: include/functions.php:3209
-#: classes/feeds.php:641
-#: classes/pref/feeds.php:559
+#: include/functions.php:3209 classes/feeds.php:641 classes/pref/feeds.php:559
 msgid "Feed URL"
 msgstr "URL du flux"
 
-#: include/functions.php:3241
-#: classes/dlg.php:37
-#: classes/dlg.php:60
-#: classes/dlg.php:93
-#: classes/dlg.php:159
-#: classes/dlg.php:190
-#: classes/dlg.php:217
-#: classes/dlg.php:250
-#: classes/dlg.php:262
-#: classes/backend.php:105
-#: classes/pref/users.php:95
-#: classes/pref/filters.php:145
-#: classes/pref/prefs.php:1096
-#: classes/pref/feeds.php:1626
-#: classes/pref/feeds.php:1694
-#: plugins/import_export/init.php:407
-#: plugins/import_export/init.php:452
-#: plugins/googlereaderimport/init.php:193
-#: plugins/share/init.php:65
+#: include/functions.php:3241 classes/dlg.php:37 classes/dlg.php:60
+#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190
+#: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262
+#: classes/backend.php:105 classes/pref/users.php:95
+#: classes/pref/filters.php:145 classes/pref/prefs.php:1096
+#: classes/pref/feeds.php:1626 classes/pref/feeds.php:1694
+#: plugins/import_export/init.php:407 plugins/import_export/init.php:452
+#: plugins/googlereaderimport/init.php:193 plugins/share/init.php:65
 #: plugins/updater/init.php:368
 msgid "Close this window"
 msgstr "Fermer cette fenêtre"
@@ -836,14 +766,12 @@ msgstr "Fichier attaché"
 msgid "LibXML error %s at line %d (column %d): %s"
 msgstr "Erreur LibXML %s ligne %d (colonne %d): %s"
 
-#: include/login_form.php:183
-#: classes/handler/public.php:475
+#: include/login_form.php:183 classes/handler/public.php:475
 #: classes/handler/public.php:758
 msgid "Login:"
 msgstr "Identifiant :"
 
-#: include/login_form.php:194
-#: classes/handler/public.php:478
+#: include/login_form.php:194 classes/handler/public.php:478
 msgid "Password:"
 msgstr "Mot de passe :"
 
@@ -855,10 +783,8 @@ msgstr "J'ai oublié mon mot de passe"
 msgid "Profile:"
 msgstr "Profil :"
 
-#: include/login_form.php:209
-#: classes/handler/public.php:233
-#: classes/rpc.php:63
-#: classes/pref/prefs.php:1034
+#: include/login_form.php:209 classes/handler/public.php:233
+#: classes/rpc.php:63 classes/pref/prefs.php:1034
 msgid "Default profile"
 msgstr "Profil par défaut"
 
@@ -868,14 +794,15 @@ msgstr "Minimiser l'usage du trafic"
 
 #: include/login_form.php:221
 msgid "Does not display images in articles, reduces automatic refreshes."
-msgstr "N'affiche pas les images dans les articles, allège les actualisation automatiques."
+msgstr ""
+"N'affiche pas les images dans les articles, allège les actualisation "
+"automatiques."
 
 #: include/login_form.php:229
 msgid "Remember me"
 msgstr "Se souvenir de moi"
 
-#: include/login_form.php:235
-#: classes/handler/public.php:483
+#: include/login_form.php:235 classes/handler/public.php:483
 msgid "Log in"
 msgstr "Se connecter"
 
@@ -891,44 +818,28 @@ msgstr "Article non trouvé."
 msgid "Tags for this article (separated by commas):"
 msgstr "Tags pour cet article (séparés par des virgules) :"
 
-#: classes/article.php:204
-#: classes/pref/users.php:172
-#: classes/pref/labels.php:79
-#: classes/pref/filters.php:403
-#: classes/pref/prefs.php:980
-#: classes/pref/feeds.php:762
-#: classes/pref/feeds.php:910
-#: plugins/nsfw/init.php:83
-#: plugins/note/init.php:51
-#: plugins/instances/init.php:245
+#: classes/article.php:204 classes/pref/users.php:172
+#: classes/pref/labels.php:79 classes/pref/filters.php:403
+#: classes/pref/prefs.php:980 classes/pref/feeds.php:762
+#: classes/pref/feeds.php:910 plugins/nsfw/init.php:83
+#: plugins/note/init.php:51 plugins/instances/init.php:245
 msgid "Save"
 msgstr "Enregistrer"
 
-#: classes/article.php:206
-#: classes/handler/public.php:452
-#: classes/handler/public.php:486
-#: classes/feeds.php:1024
-#: classes/feeds.php:1076
-#: classes/feeds.php:1136
-#: classes/pref/users.php:174
-#: classes/pref/labels.php:81
-#: classes/pref/filters.php:406
-#: classes/pref/filters.php:801
-#: classes/pref/filters.php:877
-#: classes/pref/filters.php:944
-#: classes/pref/prefs.php:982
-#: classes/pref/feeds.php:763
-#: classes/pref/feeds.php:913
-#: classes/pref/feeds.php:1834
-#: plugins/mail/init.php:124
-#: plugins/note/init.php:53
-#: plugins/instances/init.php:248
+#: classes/article.php:206 classes/handler/public.php:452
+#: classes/handler/public.php:486 classes/feeds.php:1024
+#: classes/feeds.php:1076 classes/feeds.php:1136 classes/pref/users.php:174
+#: classes/pref/labels.php:81 classes/pref/filters.php:406
+#: classes/pref/filters.php:801 classes/pref/filters.php:877
+#: classes/pref/filters.php:944 classes/pref/prefs.php:982
+#: classes/pref/feeds.php:763 classes/pref/feeds.php:913
+#: classes/pref/feeds.php:1834 plugins/mail/init.php:124
+#: plugins/note/init.php:53 plugins/instances/init.php:248
 #: plugins/instances/init.php:436
 msgid "Cancel"
 msgstr "Annuler"
 
-#: classes/handler/public.php:416
-#: plugins/bookmarklets/init.php:40
+#: classes/handler/public.php:416 plugins/bookmarklets/init.php:40
 msgid "Share with Tiny Tiny RSS"
 msgstr "Partager avec Tiny Tiny RSS"
 
@@ -936,10 +847,8 @@ msgstr "Partager avec Tiny Tiny RSS"
 msgid "Title:"
 msgstr "Titre :"
 
-#: classes/handler/public.php:426
-#: classes/pref/feeds.php:557
-#: classes/pref/feeds.php:798
-#: plugins/instances/init.php:212
+#: classes/handler/public.php:426 classes/pref/feeds.php:557
+#: classes/pref/feeds.php:798 plugins/instances/init.php:212
 #: plugins/instances/init.php:401
 msgid "URL:"
 msgstr "URL :"
@@ -968,48 +877,42 @@ msgstr "Non connecté"
 msgid "Incorrect username or password"
 msgstr "Identifiant ou mot de passe incorrect"
 
-#: classes/handler/public.php:568
-#: classes/handler/public.php:666
+#: classes/handler/public.php:568 classes/handler/public.php:666
 #, php-format
 msgid "Already subscribed to <b>%s</b>."
 msgstr "Déjà abonné Ã  <b>%s</b>."
 
-#: classes/handler/public.php:571
-#: classes/handler/public.php:657
+#: classes/handler/public.php:571 classes/handler/public.php:657
 #, php-format
 msgid "Subscribed to <b>%s</b>."
 msgstr "Abonné Ã  <b>%s</b>."
 
-#: classes/handler/public.php:574
-#: classes/handler/public.php:660
+#: classes/handler/public.php:574 classes/handler/public.php:660
 #, php-format
 msgid "Could not subscribe to <b>%s</b>."
 msgstr "Impossible de s'abonner Ã  <b>%s</b>."
 
-#: classes/handler/public.php:577
-#: classes/handler/public.php:663
+#: classes/handler/public.php:577 classes/handler/public.php:663
 #, php-format
 msgid "No feeds found in <b>%s</b>."
 msgstr "Aucun flux trouvé dans <b>%s</b>."
 
-#: classes/handler/public.php:580
-#: classes/handler/public.php:669
+#: classes/handler/public.php:580 classes/handler/public.php:669
 msgid "Multiple feed URLs found."
 msgstr "Plusieurs flux trouvé."
 
-#: classes/handler/public.php:584
-#: classes/handler/public.php:676
+#: classes/handler/public.php:584 classes/handler/public.php:676
 #, php-format
 msgid "Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL."
-msgstr "Impossible de s'abonner Ã  <b>%s</b>.<br>Impossible de télécharger l'URL du flux."
+msgstr ""
+"Impossible de s'abonner Ã  <b>%s</b>.<br>Impossible de télécharger l'URL du "
+"flux."
 
-#: classes/handler/public.php:602
-#: classes/handler/public.php:694
+#: classes/handler/public.php:602 classes/handler/public.php:694
 msgid "Subscribe to selected feed"
 msgstr "S'abonner au flux sélectionné"
 
-#: classes/handler/public.php:627
-#: classes/handler/public.php:718
+#: classes/handler/public.php:627 classes/handler/public.php:718
 msgid "Edit subscription options"
 msgstr "Modifier les options d'abonnement"
 
@@ -1018,11 +921,14 @@ msgid "Password recovery"
 msgstr "Récupération de mot de passe"
 
 #: classes/handler/public.php:751
-msgid "You will need to provide valid account name and email. New password will be sent on your email address."
-msgstr "Vous devrez fournir un nom et une adresse email valides. Le nouveau mot de passe sera envoyé Ã  votre adresse email."
+msgid ""
+"You will need to provide valid account name and email. New password will be "
+"sent on your email address."
+msgstr ""
+"Vous devrez fournir un nom et une adresse email valides. Le nouveau mot de "
+"passe sera envoyé Ã  votre adresse email."
 
-#: classes/handler/public.php:773
-#: classes/pref/users.php:356
+#: classes/handler/public.php:773 classes/pref/users.php:356
 msgid "Reset password"
 msgstr "Réinitialiser le mot de passe"
 
@@ -1030,8 +936,7 @@ msgstr "Réinitialiser le mot de passe"
 msgid "Some of the required form parameters are missing or incorrect."
 msgstr "Des paramètres du formulaire manquent ou sont invalides."
 
-#: classes/handler/public.php:787
-#: classes/handler/public.php:813
+#: classes/handler/public.php:787 classes/handler/public.php:813
 msgid "Go back"
 msgstr "Revenir"
 
@@ -1052,30 +957,44 @@ msgid "Perform updates"
 msgstr "Exécuter les mises Ã  jour"
 
 #: classes/dlg.php:16
-msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data."
-msgstr "Si vous avez importé des Ã©tiquettes et/ou des filtres, vous devrez peut-être recharger les préférences pour voir les nouvelles données."
+msgid ""
+"If you have imported labels and/or filters, you might need to reload "
+"preferences to see your new data."
+msgstr ""
+"Si vous avez importé des Ã©tiquettes et/ou des filtres, vous devrez peut-être "
+"recharger les préférences pour voir les nouvelles données."
 
 #: classes/dlg.php:48
 msgid "Your Public OPML URL is:"
 msgstr "Votre URL OPML publique est :"
 
-#: classes/dlg.php:57
-#: classes/dlg.php:214
+#: classes/dlg.php:57 classes/dlg.php:214
 msgid "Generate new URL"
 msgstr "Générer une nouvelle URL"
 
 #: classes/dlg.php:71
-msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner."
-msgstr "Le démon de mise Ã  jour est activé dans la configuration mais le processus n'est pas lancé et les flux ne sont donc pas mis Ã  jour. Veuillez le démarrer ou contacter l'administrateur."
+msgid ""
+"Update daemon is enabled in configuration, but daemon process is not "
+"running, which prevents all feeds from updating. Please start the daemon "
+"process or contact instance owner."
+msgstr ""
+"Le démon de mise Ã  jour est activé dans la configuration mais le processus "
+"n'est pas lancé et les flux ne sont donc pas mis Ã  jour. Veuillez le "
+"démarrer ou contacter l'administrateur."
 
-#: classes/dlg.php:75
-#: classes/dlg.php:84
+#: classes/dlg.php:75 classes/dlg.php:84
 msgid "Last update:"
 msgstr "Dernière mise Ã  jour :"
 
 #: classes/dlg.php:80
-msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner."
-msgstr "Le démon de mise Ã  jour prend trop de temps pour effectuer une mise Ã  jour de flux. Cela peut indiquer un problème comme un crash ou un suspension du processus. Veuillez vérifier son Ã©tat ou bien contacter l'administrateur."
+msgid ""
+"Update daemon is taking too long to perform a feed update. This could "
+"indicate a problem like crash or a hang. Please check the daemon process or "
+"contact instance owner."
+msgstr ""
+"Le démon de mise Ã  jour prend trop de temps pour effectuer une mise Ã  jour "
+"de flux. Cela peut indiquer un problème comme un crash ou un suspension du "
+"processus. Veuillez vérifier son Ã©tat ou bien contacter l'administrateur."
 
 #: classes/dlg.php:166
 msgid "Match:"
@@ -1101,18 +1020,19 @@ msgstr "Afficher les entrées"
 msgid "You can view this feed as RSS using the following URL:"
 msgstr "Vous pouvez consulter ce flux comme RSS en utilisant l'URL suivante :"
 
-#: classes/dlg.php:233
-#: plugins/updater/init.php:331
+#: classes/dlg.php:233 plugins/updater/init.php:331
 #, php-format
 msgid "New version of Tiny Tiny RSS is available (%s)."
 msgstr "Une nouvelle version de Tiny Tiny RSS est disponible (%s)."
 
 #: classes/dlg.php:241
-msgid "You can update using built-in updater in the Preferences or by using update.php"
-msgstr "Vous pouvez mettre Ã  jour depuis la Configuration ou en utilisant update.php"
+msgid ""
+"You can update using built-in updater in the Preferences or by using update."
+"php"
+msgstr ""
+"Vous pouvez mettre Ã  jour depuis la Configuration ou en utilisant update.php"
 
-#: classes/dlg.php:245
-#: plugins/updater/init.php:335
+#: classes/dlg.php:245 plugins/updater/init.php:335
 msgid "See the release notes"
 msgstr "Voir les notes de publication"
 
@@ -1122,7 +1042,9 @@ msgstr "Télécharger"
 
 #: classes/dlg.php:255
 msgid "Error receiving version information or no new version available."
-msgstr "Erreur de lecture de l'information de version ou aucune nouvelle version disponible."
+msgstr ""
+"Erreur de lecture de l'information de version ou aucune nouvelle version "
+"disponible."
 
 #: classes/feeds.php:56
 #, php-format
@@ -1133,9 +1055,7 @@ msgstr "Dernière mise Ã  jour : %s"
 msgid "View as RSS feed"
 msgstr "Voir comme flux RSS"
 
-#: classes/feeds.php:76
-#: classes/feeds.php:128
-#: classes/pref/feeds.php:1478
+#: classes/feeds.php:76 classes/feeds.php:128 classes/pref/feeds.php:1478
 msgid "View as RSS"
 msgstr "Voir comme RSS"
 
@@ -1143,19 +1063,12 @@ msgstr "Voir comme RSS"
 msgid "Select:"
 msgstr "Sélectionner :"
 
-#: classes/feeds.php:84
-#: classes/pref/users.php:341
-#: classes/pref/labels.php:275
-#: classes/pref/filters.php:280
-#: classes/pref/filters.php:328
-#: classes/pref/filters.php:646
-#: classes/pref/filters.php:734
-#: classes/pref/filters.php:761
-#: classes/pref/prefs.php:994
-#: classes/pref/feeds.php:1310
-#: classes/pref/feeds.php:1575
-#: classes/pref/feeds.php:1641
-#: plugins/instances/init.php:287
+#: classes/feeds.php:84 classes/pref/users.php:341 classes/pref/labels.php:275
+#: classes/pref/filters.php:280 classes/pref/filters.php:328
+#: classes/pref/filters.php:646 classes/pref/filters.php:734
+#: classes/pref/filters.php:761 classes/pref/prefs.php:994
+#: classes/pref/feeds.php:1310 classes/pref/feeds.php:1575
+#: classes/pref/feeds.php:1641 plugins/instances/init.php:287
 msgid "All"
 msgstr "Tout"
 
@@ -1163,19 +1076,12 @@ msgstr "Tout"
 msgid "Invert"
 msgstr "Inverse"
 
-#: classes/feeds.php:87
-#: classes/pref/users.php:343
-#: classes/pref/labels.php:277
-#: classes/pref/filters.php:282
-#: classes/pref/filters.php:330
-#: classes/pref/filters.php:648
-#: classes/pref/filters.php:736
-#: classes/pref/filters.php:763
-#: classes/pref/prefs.php:996
-#: classes/pref/feeds.php:1312
-#: classes/pref/feeds.php:1577
-#: classes/pref/feeds.php:1643
-#: plugins/instances/init.php:289
+#: classes/feeds.php:87 classes/pref/users.php:343 classes/pref/labels.php:277
+#: classes/pref/filters.php:282 classes/pref/filters.php:330
+#: classes/pref/filters.php:648 classes/pref/filters.php:736
+#: classes/pref/filters.php:763 classes/pref/prefs.php:996
+#: classes/pref/feeds.php:1312 classes/pref/feeds.php:1577
+#: classes/pref/feeds.php:1643 plugins/instances/init.php:289
 msgid "None"
 msgstr "Aucun"
 
@@ -1203,17 +1109,13 @@ msgstr "Archive"
 msgid "Move back"
 msgstr "Revenir"
 
-#: classes/feeds.php:110
-#: classes/pref/filters.php:289
-#: classes/pref/filters.php:337
-#: classes/pref/filters.php:743
+#: classes/feeds.php:110 classes/pref/filters.php:289
+#: classes/pref/filters.php:337 classes/pref/filters.php:743
 #: classes/pref/filters.php:770
 msgid "Delete"
 msgstr "Supprimer"
 
-#: classes/feeds.php:115
-#: classes/feeds.php:120
-#: plugins/mailto/init.php:25
+#: classes/feeds.php:115 classes/feeds.php:120 plugins/mailto/init.php:25
 #: plugins/mail/init.php:26
 msgid "Forward by email"
 msgstr "Transférer par email"
@@ -1222,8 +1124,7 @@ msgstr "Transférer par email"
 msgid "Feed:"
 msgstr "Flux :"
 
-#: classes/feeds.php:197
-#: classes/feeds.php:824
+#: classes/feeds.php:197 classes/feeds.php:824
 msgid "Feed not found."
 msgstr "Flux non trouvé."
 
@@ -1257,36 +1158,38 @@ msgid "No starred articles found to display."
 msgstr "Aucun article remarquable Ã  afficher."
 
 #: classes/feeds.php:735
-msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter."
-msgstr "Aucun article Ã  afficher. Vous pouvez assigner des Ã©tiquettes aux articles manuellement (voir les actions du menu ci-dessus) ou utiliser un filtre."
+msgid ""
+"No articles found to display. You can assign articles to labels manually "
+"from article header context menu (applies to all selected articles) or use a "
+"filter."
+msgstr ""
+"Aucun article Ã  afficher. Vous pouvez assigner des Ã©tiquettes aux articles "
+"manuellement (voir les actions du menu ci-dessus) ou utiliser un filtre."
 
 #: classes/feeds.php:737
 msgid "No articles found to display."
 msgstr "Aucun article Ã  afficher."
 
-#: classes/feeds.php:752
-#: classes/feeds.php:919
+#: classes/feeds.php:752 classes/feeds.php:919
 #, php-format
 msgid "Feeds last updated at %s"
 msgstr "Flux mis Ã  jour Ã  %s"
 
-#: classes/feeds.php:762
-#: classes/feeds.php:929
+#: classes/feeds.php:762 classes/feeds.php:929
 msgid "Some feeds have update errors (click for details)"
-msgstr "Des erreurs sont survenues pendant la mise Ã  jour de certains flux (cliquer ici pour les détails)"
+msgstr ""
+"Des erreurs sont survenues pendant la mise Ã  jour de certains flux (cliquer "
+"ici pour les détails)"
 
 #: classes/feeds.php:909
 msgid "No feed selected."
 msgstr "Aucun flux sélectionné."
 
-#: classes/feeds.php:962
-#: classes/feeds.php:970
+#: classes/feeds.php:962 classes/feeds.php:970
 msgid "Feed or site URL"
 msgstr "URL du flux"
 
-#: classes/feeds.php:976
-#: classes/pref/feeds.php:579
-#: classes/pref/feeds.php:811
+#: classes/feeds.php:976 classes/pref/feeds.php:579 classes/pref/feeds.php:811
 #: classes/pref/feeds.php:1798
 msgid "Place in category:"
 msgstr "Placer dans la catégorie :"
@@ -1295,25 +1198,19 @@ msgstr "Placer dans la catégorie :"
 msgid "Available feeds"
 msgstr "Flux disponibles"
 
-#: classes/feeds.php:996
-#: classes/pref/users.php:135
-#: classes/pref/feeds.php:609
+#: classes/feeds.php:996 classes/pref/users.php:135 classes/pref/feeds.php:609
 #: classes/pref/feeds.php:847
 msgid "Authentication"
 msgstr "Identification"
 
-#: classes/feeds.php:1000
-#: classes/pref/users.php:398
-#: classes/pref/feeds.php:615
-#: classes/pref/feeds.php:851
+#: classes/feeds.php:1000 classes/pref/users.php:398
+#: classes/pref/feeds.php:615 classes/pref/feeds.php:851
 #: classes/pref/feeds.php:1812
 msgid "Login"
 msgstr "Se connecter"
 
-#: classes/feeds.php:1003
-#: classes/pref/prefs.php:260
-#: classes/pref/feeds.php:628
-#: classes/pref/feeds.php:857
+#: classes/feeds.php:1003 classes/pref/prefs.php:260
+#: classes/pref/feeds.php:628 classes/pref/feeds.php:857
 #: classes/pref/feeds.php:1815
 msgid "Password"
 msgstr "Mot de passe"
@@ -1322,9 +1219,7 @@ msgstr "Mot de passe"
 msgid "This feed requires authentication."
 msgstr "Ce flux nécessite une identification."
 
-#: classes/feeds.php:1018
-#: classes/feeds.php:1074
-#: classes/pref/feeds.php:1833
+#: classes/feeds.php:1018 classes/feeds.php:1074 classes/pref/feeds.php:1833
 msgid "Subscribe"
 msgstr "S'abonner"
 
@@ -1332,12 +1227,8 @@ msgstr "S'abonner"
 msgid "More feeds"
 msgstr "D'autres flux"
 
-#: classes/feeds.php:1044
-#: classes/feeds.php:1135
-#: classes/pref/users.php:328
-#: classes/pref/filters.php:639
-#: classes/pref/feeds.php:1303
-#: js/tt-rss.js:174
+#: classes/feeds.php:1044 classes/feeds.php:1135 classes/pref/users.php:328
+#: classes/pref/filters.php:639 classes/pref/feeds.php:1303 js/tt-rss.js:174
 msgid "Search"
 msgstr "Rechercher"
 
@@ -1353,12 +1244,9 @@ msgstr "Archive du flux"
 msgid "limit:"
 msgstr "limite :"
 
-#: classes/feeds.php:1075
-#: classes/pref/users.php:354
-#: classes/pref/labels.php:284
-#: classes/pref/filters.php:396
-#: classes/pref/filters.php:665
-#: classes/pref/feeds.php:733
+#: classes/feeds.php:1075 classes/pref/users.php:354
+#: classes/pref/labels.php:284 classes/pref/filters.php:396
+#: classes/pref/filters.php:665 classes/pref/feeds.php:733
 #: plugins/instances/init.php:294
 msgid "Remove"
 msgstr "Supprimer"
@@ -1377,7 +1265,9 @@ msgstr "Ce flux"
 
 #: classes/backend.php:33
 msgid "Other interface tips are available in the Tiny Tiny RSS wiki."
-msgstr "D'autres astuces sur l'interface sont disponibles sur le wiki de Tiny Tiny RSS."
+msgstr ""
+"D'autres astuces sur l'interface sont disponibles sur le wiki de Tiny Tiny "
+"RSS."
 
 #: classes/backend.php:38
 msgid "Keyboard Shortcuts"
@@ -1395,8 +1285,7 @@ msgstr "Ctrl"
 msgid "Help topic not found."
 msgstr "Sujet non trouvé dans l'aide."
 
-#: classes/opml.php:28
-#: classes/opml.php:33
+#: classes/opml.php:28 classes/opml.php:33
 msgid "OPML Utility"
 msgstr "Outil OPML"
 
@@ -1442,21 +1331,18 @@ msgstr "Créer un filtre..."
 msgid "Processing category: %s"
 msgstr "Placer dans la catégorie : %s"
 
-#: classes/opml.php:465
-#: plugins/import_export/init.php:420
+#: classes/opml.php:465 plugins/import_export/init.php:420
 #: plugins/googlereaderimport/init.php:66
 #, php-format
 msgid "Upload failed with error code %d"
 msgstr "Échec de l'envoi, code d'erreur %d"
 
-#: classes/opml.php:479
-#: plugins/import_export/init.php:434
+#: classes/opml.php:479 plugins/import_export/init.php:434
 #: plugins/googlereaderimport/init.php:80
 msgid "Unable to move uploaded file."
 msgstr "Impossible de déplacer le fichier envoyé."
 
-#: classes/opml.php:483
-#: plugins/import_export/init.php:438
+#: classes/opml.php:483 plugins/import_export/init.php:438
 #: plugins/googlereaderimport/init.php:84
 msgid "Error: please upload OPML file."
 msgstr "Erreur : veuillez envoyer un document OPML."
@@ -1465,13 +1351,11 @@ msgstr "Erreur : veuillez envoyer un document OPML."
 msgid "Error: unable to find moved OPML file."
 msgstr "Erreur : impossible de trouver le fichier OPML déplacé."
 
-#: classes/opml.php:499
-#: plugins/googlereaderimport/init.php:186
+#: classes/opml.php:499 plugins/googlereaderimport/init.php:186
 msgid "Error while parsing document."
 msgstr "Erreur lors de l'analyse du document."
 
-#: classes/pref/users.php:6
-#: classes/pref/system.php:8
+#: classes/pref/users.php:6 classes/pref/system.php:8
 #: plugins/instances/init.php:154
 msgid "Your access level is insufficient to open this tab."
 msgstr "Vous n'avez pas les permissions nécessaires pour ouvrir cet onglet."
@@ -1480,8 +1364,7 @@ msgstr "Vous n'avez pas les permissions nécessaires pour ouvrir cet onglet."
 msgid "User not found"
 msgstr "Utilisateur non trouvé"
 
-#: classes/pref/users.php:53
-#: classes/pref/users.php:400
+#: classes/pref/users.php:53 classes/pref/users.php:400
 msgid "Registered"
 msgstr "Inscrit"
 
@@ -1505,8 +1388,7 @@ msgstr "Permissions : "
 msgid "Change password to"
 msgstr "Nouveau mot de passe"
 
-#: classes/pref/users.php:157
-#: classes/pref/feeds.php:636
+#: classes/pref/users.php:157 classes/pref/feeds.php:636
 #: classes/pref/feeds.php:863
 msgid "Options"
 msgstr "Options"
@@ -1544,18 +1426,12 @@ msgstr "Envoi du mot de passe de <b>%s</b> Ã  <b>%s</b>"
 msgid "[tt-rss] Password change notification"
 msgstr "[tt-rss] Notification de changement de mot passe"
 
-#: classes/pref/users.php:338
-#: classes/pref/labels.php:272
-#: classes/pref/filters.php:277
-#: classes/pref/filters.php:325
-#: classes/pref/filters.php:643
-#: classes/pref/filters.php:731
-#: classes/pref/filters.php:758
-#: classes/pref/prefs.php:991
-#: classes/pref/feeds.php:1307
-#: classes/pref/feeds.php:1572
-#: classes/pref/feeds.php:1638
-#: plugins/instances/init.php:284
+#: classes/pref/users.php:338 classes/pref/labels.php:272
+#: classes/pref/filters.php:277 classes/pref/filters.php:325
+#: classes/pref/filters.php:643 classes/pref/filters.php:731
+#: classes/pref/filters.php:758 classes/pref/prefs.php:991
+#: classes/pref/feeds.php:1307 classes/pref/feeds.php:1572
+#: classes/pref/feeds.php:1638 plugins/instances/init.php:284
 msgid "Select"
 msgstr "Sélectionner"
 
@@ -1567,8 +1443,7 @@ msgstr "Créer l'utilisateur"
 msgid "Details"
 msgstr "Détails"
 
-#: classes/pref/users.php:352
-#: classes/pref/filters.php:658
+#: classes/pref/users.php:352 classes/pref/filters.php:658
 #: plugins/instances/init.php:293
 msgid "Edit"
 msgstr "Modifier"
@@ -1581,8 +1456,7 @@ msgstr "Permissions"
 msgid "Last login"
 msgstr "Dernière connexion"
 
-#: classes/pref/users.php:420
-#: plugins/instances/init.php:334
+#: classes/pref/users.php:420 plugins/instances/init.php:334
 msgid "Click to edit"
 msgstr "Cliquer pour modifier"
 
@@ -1594,8 +1468,7 @@ msgstr "Aucun utilisateur défini."
 msgid "No matching users found."
 msgstr "Aucun utilisateur correspondant trouvé."
 
-#: classes/pref/labels.php:22
-#: classes/pref/filters.php:266
+#: classes/pref/labels.php:22 classes/pref/filters.php:266
 #: classes/pref/filters.php:722
 msgid "Caption"
 msgstr "Légende"
@@ -1630,44 +1503,40 @@ msgid "No recent articles matching this filter have been found."
 msgstr "Aucun article récent correspondant Ã  ce filtre."
 
 #: classes/pref/filters.php:135
-msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation."
-msgstr "Les expressions complexes risquent de ne pas avoir de résulats dans les tests Ã  cause de problèmes avec le serveur."
+msgid ""
+"Complex expressions might not give results while testing due to issues with "
+"database server regexp implementation."
+msgstr ""
+"Les expressions complexes risquent de ne pas avoir de résulats dans les "
+"tests Ã  cause de problèmes avec le serveur."
 
-#: classes/pref/filters.php:272
-#: classes/pref/filters.php:726
+#: classes/pref/filters.php:272 classes/pref/filters.php:726
 #: classes/pref/filters.php:841
 msgid "Match"
 msgstr "Correspondance"
 
-#: classes/pref/filters.php:286
-#: classes/pref/filters.php:334
-#: classes/pref/filters.php:740
-#: classes/pref/filters.php:767
+#: classes/pref/filters.php:286 classes/pref/filters.php:334
+#: classes/pref/filters.php:740 classes/pref/filters.php:767
 msgid "Add"
 msgstr "Ajouter"
 
-#: classes/pref/filters.php:320
-#: classes/pref/filters.php:753
+#: classes/pref/filters.php:320 classes/pref/filters.php:753
 msgid "Apply actions"
 msgstr "Actions Ã©ffectuées"
 
-#: classes/pref/filters.php:370
-#: classes/pref/filters.php:782
+#: classes/pref/filters.php:370 classes/pref/filters.php:782
 msgid "Enabled"
 msgstr "Activé"
 
-#: classes/pref/filters.php:379
-#: classes/pref/filters.php:785
+#: classes/pref/filters.php:379 classes/pref/filters.php:785
 msgid "Match any rule"
 msgstr "Au moins une correspondance"
 
-#: classes/pref/filters.php:388
-#: classes/pref/filters.php:788
+#: classes/pref/filters.php:388 classes/pref/filters.php:788
 msgid "Inverse matching"
 msgstr "Correspondance inverse"
 
-#: classes/pref/filters.php:400
-#: classes/pref/filters.php:795
+#: classes/pref/filters.php:400 classes/pref/filters.php:795
 msgid "Test"
 msgstr "Test"
 
@@ -1684,14 +1553,12 @@ msgstr "%s sur %s dans %s %s"
 msgid "Combine"
 msgstr "Combiner"
 
-#: classes/pref/filters.php:661
-#: classes/pref/feeds.php:1323
+#: classes/pref/filters.php:661 classes/pref/feeds.php:1323
 #: classes/pref/feeds.php:1337
 msgid "Reset sort order"
 msgstr "Réinitialiser le critère de tri"
 
-#: classes/pref/filters.php:669
-#: classes/pref/feeds.php:1359
+#: classes/pref/filters.php:669 classes/pref/feeds.php:1359
 msgid "Rescore articles"
 msgstr "Recalculer le score des articles"
 
@@ -1707,8 +1574,7 @@ msgstr "Inverser le résultat de l'expression rationnelle"
 msgid "on field"
 msgstr "sur le champ"
 
-#: classes/pref/filters.php:861
-#: js/PrefFilterTree.js:45
+#: classes/pref/filters.php:861 js/PrefFilterTree.js:45
 msgid "in"
 msgstr "dans"
 
@@ -1716,8 +1582,7 @@ msgstr "dans"
 msgid "Save rule"
 msgstr "Enregistrer"
 
-#: classes/pref/filters.php:874
-#: js/functions.js:1013
+#: classes/pref/filters.php:874 js/functions.js:1013
 msgid "Add rule"
 msgstr "Ajouter une règle"
 
@@ -1733,8 +1598,7 @@ msgstr "avec les paramètres :"
 msgid "Save action"
 msgstr "Enregistrer"
 
-#: classes/pref/filters.php:941
-#: js/functions.js:1039
+#: classes/pref/filters.php:941 js/functions.js:1039
 msgid "Add action"
 msgstr "Ajouter une action"
 
@@ -1771,16 +1635,24 @@ msgid "Blacklisted tags"
 msgstr "Tags exclus"
 
 #: classes/pref/prefs.php:27
-msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)."
-msgstr "Lors de l'auto-détection des tags dans les articles, ces tags ne seront pas utilisés (séparés par des virgules)."
+msgid ""
+"When auto-detecting tags in articles these tags will not be applied (comma-"
+"separated list)."
+msgstr ""
+"Lors de l'auto-détection des tags dans les articles, ces tags ne seront pas "
+"utilisés (séparés par des virgules)."
 
 #: classes/pref/prefs.php:28
 msgid "Automatically mark articles as read"
 msgstr "Automatiquement marquer les articles comme lus"
 
 #: classes/pref/prefs.php:28
-msgid "This option enables marking articles as read automatically while you scroll article list."
-msgstr "Cette option permet de marquer automatiquement les articles comme lus lorsque vous naviguez dans la liste d'articles."
+msgid ""
+"This option enables marking articles as read automatically while you scroll "
+"article list."
+msgstr ""
+"Cette option permet de marquer automatiquement les articles comme lus "
+"lorsque vous naviguez dans la liste d'articles."
 
 #: classes/pref/prefs.php:29
 msgid "Automatically expand articles in combined mode"
@@ -1791,8 +1663,12 @@ msgid "Combined feed display"
 msgstr "Affichage combiné des flux"
 
 #: classes/pref/prefs.php:30
-msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content"
-msgstr "Affiche les articles sous la forme d'une liste Ã©tendue, au lieu de deux listes séparées (une pour les en-têtes et une pour le contenu)"
+msgid ""
+"Display expanded list of feed articles, instead of separate displays for "
+"headlines and article content"
+msgstr ""
+"Affiche les articles sous la forme d'une liste Ã©tendue, au lieu de deux "
+"listes séparées (une pour les en-têtes et une pour le contenu)"
 
 #: classes/pref/prefs.php:31
 msgid "Confirm marking feed as read"
@@ -1807,8 +1683,12 @@ msgid "Default feed update interval"
 msgstr "Fréquence de mise Ã  jour par défaut"
 
 #: classes/pref/prefs.php:33
-msgid "Shortest interval at which a feed will be checked for updates regardless of update method"
-msgstr "Intervalle minimum de temps entre deux mises Ã  jour d'un flux, quelle que soit la méthode de mise Ã  jour"
+msgid ""
+"Shortest interval at which a feed will be checked for updates regardless of "
+"update method"
+msgstr ""
+"Intervalle minimum de temps entre deux mises Ã  jour d'un flux, quelle que "
+"soit la méthode de mise Ã  jour"
 
 #: classes/pref/prefs.php:34
 msgid "Mark articles in e-mail digest as read"
@@ -1819,8 +1699,12 @@ msgid "Enable e-mail digest"
 msgstr "Activer la synthèse quotidienne par courrier Ã©lectronique"
 
 #: classes/pref/prefs.php:35
-msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address"
-msgstr "Cette option active l'envoi d'une synthèse quotidienne (digest) des en-têtes nouveaux et non lus Ã  l'adresse Ã©lectronique donnée"
+msgid ""
+"This option enables sending daily digest of new (and unread) headlines on "
+"your configured e-mail address"
+msgstr ""
+"Cette option active l'envoi d'une synthèse quotidienne (digest) des en-têtes "
+"nouveaux et non lus Ã  l'adresse Ã©lectronique donnée"
 
 #: classes/pref/prefs.php:36
 msgid "Try to send digests around specified time"
@@ -1867,12 +1751,15 @@ msgid "On catchup show next feed"
 msgstr "Sauter automatiquement au flux suivant"
 
 #: classes/pref/prefs.php:44
-msgid "Automatically open next feed with unread articles after marking one as read"
+msgid ""
+"Automatically open next feed with unread articles after marking one as read"
 msgstr "Sauter automatiquement au flux suivant après en marquer un comme lu"
 
 #: classes/pref/prefs.php:45
 msgid "Purge articles after this number of days (0 - disables)"
-msgstr "Purger les articles plus vieux que le nombre de jours donné (0 pour ne jamais purger)"
+msgstr ""
+"Purger les articles plus vieux que le nombre de jours donné (0 pour ne "
+"jamais purger)"
 
 #: classes/pref/prefs.php:46
 msgid "Purge unread articles"
@@ -1896,7 +1783,9 @@ msgstr "Trier les en-têtes par date de flux"
 
 #: classes/pref/prefs.php:50
 msgid "Use feed-specified date to sort headlines instead of local import date."
-msgstr "Utiliser les dates spécifiées dans le flux pour trier les en-têtes au lieu des dates importées localement."
+msgstr ""
+"Utiliser les dates spécifiées dans le flux pour trier les en-têtes au lieu "
+"des dates importées localement."
 
 #: classes/pref/prefs.php:51
 msgid "Login with an SSL certificate"
@@ -1916,10 +1805,11 @@ msgstr "Éliminer les tags non sûrs des articles"
 
 #: classes/pref/prefs.php:53
 msgid "Strip all but most common HTML tags when reading articles."
-msgstr "Élimine toutes les balises HTML sauf les plus courantes lors de la lecture des articles."
+msgstr ""
+"Élimine toutes les balises HTML sauf les plus courantes lors de la lecture "
+"des articles."
 
-#: classes/pref/prefs.php:54
-#: js/prefs.js:1719
+#: classes/pref/prefs.php:54 js/prefs.js:1719
 msgid "Customize stylesheet"
 msgstr "Personnaliser la feuille de style"
 
@@ -2014,7 +1904,9 @@ msgstr "Votre mot de passe est celui par défaut, veuillez le modifier."
 
 #: classes/pref/prefs.php:294
 msgid "Changing your current password will disable OTP."
-msgstr "Changer votre mot de passe actuel désactivera les mots de passe Ã  usage unique."
+msgstr ""
+"Changer votre mot de passe actuel désactivera les mots de passe Ã  usage "
+"unique."
 
 #: classes/pref/prefs.php:299
 msgid "Old password"
@@ -2037,11 +1929,14 @@ msgid "One time passwords / Authenticator"
 msgstr "Mots de passe Ã  usage unique / Identificateur"
 
 #: classes/pref/prefs.php:327
-msgid "One time passwords are currently enabled. Enter your current password below to disable."
-msgstr "Les mots de passe Ã  usage unique sont actuellement activés. Entrez votre mot de passe actuel ci-dessous pour les désactiver."
+msgid ""
+"One time passwords are currently enabled. Enter your current password below "
+"to disable."
+msgstr ""
+"Les mots de passe Ã  usage unique sont actuellement activés. Entrez votre mot "
+"de passe actuel ci-dessous pour les désactiver."
 
-#: classes/pref/prefs.php:352
-#: classes/pref/prefs.php:403
+#: classes/pref/prefs.php:352 classes/pref/prefs.php:403
 msgid "Enter your password"
 msgstr "Entrez votre mot de passe"
 
@@ -2050,8 +1945,12 @@ msgid "Disable OTP"
 msgstr "Désactiver les mots de passe Ã  usage unique"
 
 #: classes/pref/prefs.php:369
-msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP."
-msgstr "Vous aurez besoin d'un Identificateur compatible pour utiliser ceci. Changer votre mot de passe le désactivera automatiquement."
+msgid ""
+"You will need a compatible Authenticator to use this. Changing your password "
+"would automatically disable OTP."
+msgstr ""
+"Vous aurez besoin d'un Identificateur compatible pour utiliser ceci. Changer "
+"votre mot de passe le désactivera automatiquement."
 
 #: classes/pref/prefs.php:371
 msgid "Scan the following code by the Authenticator application:"
@@ -2067,7 +1966,9 @@ msgstr "Activer les mots de passe Ã  usage unique"
 
 #: classes/pref/prefs.php:428
 msgid "PHP GD functions are required for OTP support."
-msgstr "Les fonctions GD de PHP sont nécessaires pour utiliser les mots de passe Ã  usage unique."
+msgstr ""
+"Les fonctions GD de PHP sont nécessaires pour utiliser les mots de passe Ã  "
+"usage unique."
 
 #: classes/pref/prefs.php:471
 msgid "Some preferences are only available in default profile."
@@ -2111,44 +2012,49 @@ msgid "Plugins"
 msgstr "Plugins"
 
 #: classes/pref/prefs.php:708
-msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect."
-msgstr "Vous devrez relancer Tiny Tiny RSS pour que les changements apportés aux plugins prennent effet."
+msgid ""
+"You will need to reload Tiny Tiny RSS for plugin changes to take effect."
+msgstr ""
+"Vous devrez relancer Tiny Tiny RSS pour que les changements apportés aux "
+"plugins prennent effet."
 
 #: classes/pref/prefs.php:710
-msgid "Download more plugins at tt-rss.org <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forums</a> or <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins\">wiki</a>."
-msgstr "Téléchargez plus de plugins sur <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">le forum</a> ou <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins\">le wiki</a> de Tiny Tiny RSS."
+msgid ""
+"Download more plugins at tt-rss.org <a class=\"visibleLink\" target=\"_blank"
+"\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forums</a> or <a "
+"target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins"
+"\">wiki</a>."
+msgstr ""
+"Téléchargez plus de plugins sur <a class=\"visibleLink\" target=\"_blank\" "
+"href=\"http://tt-rss.org/forum/viewforum.php?f=22\">le forum</a> ou <a "
+"target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins"
+"\">le wiki</a> de Tiny Tiny RSS."
 
 #: classes/pref/prefs.php:736
 msgid "System plugins"
 msgstr "Plugins systèmes"
 
-#: classes/pref/prefs.php:740
-#: classes/pref/prefs.php:794
+#: classes/pref/prefs.php:740 classes/pref/prefs.php:794
 msgid "Plugin"
 msgstr "Plugin"
 
-#: classes/pref/prefs.php:741
-#: classes/pref/prefs.php:795
+#: classes/pref/prefs.php:741 classes/pref/prefs.php:795
 msgid "Description"
 msgstr "Description"
 
-#: classes/pref/prefs.php:742
-#: classes/pref/prefs.php:796
+#: classes/pref/prefs.php:742 classes/pref/prefs.php:796
 msgid "Version"
 msgstr "Version"
 
-#: classes/pref/prefs.php:743
-#: classes/pref/prefs.php:797
+#: classes/pref/prefs.php:743 classes/pref/prefs.php:797
 msgid "Author"
 msgstr "Auteur"
 
-#: classes/pref/prefs.php:772
-#: classes/pref/prefs.php:829
+#: classes/pref/prefs.php:772 classes/pref/prefs.php:829
 msgid "more info"
 msgstr "plus d'info"
 
-#: classes/pref/prefs.php:781
-#: classes/pref/prefs.php:838
+#: classes/pref/prefs.php:781 classes/pref/prefs.php:838
 msgid "Clear data"
 msgstr "Purger les données"
 
@@ -2164,22 +2070,27 @@ msgstr "Activer les plugins sélectionnés"
 msgid "Incorrect one time password"
 msgstr "Mot de passe incorrect"
 
-#: classes/pref/prefs.php:923
-#: classes/pref/prefs.php:940
+#: classes/pref/prefs.php:923 classes/pref/prefs.php:940
 msgid "Incorrect password"
 msgstr "Mot de passe incorrect"
 
 #: classes/pref/prefs.php:965
 #, php-format
-msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline."
-msgstr "Vous pouvez redéfinir les couleurs, les polices et la mise en page du thème actuellement sélectionné Ã  l'aide de vos propres instructions CSS ici. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">Ce fichier</a> peut Ãªtre utilisé comme base de départ."
+msgid ""
+"You can override colors, fonts and layout of your currently selected theme "
+"with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink"
+"\" href=\"%s\">This file</a> can be used as a baseline."
+msgstr ""
+"Vous pouvez redéfinir les couleurs, les polices et la mise en page du thème "
+"actuellement sélectionné Ã  l'aide de vos propres instructions CSS ici. <a "
+"target=\"_blank\" class=\"visibleLink\" href=\"%s\">Ce fichier</a> peut Ãªtre "
+"utilisé comme base de départ."
 
 #: classes/pref/prefs.php:1005
 msgid "Create profile"
 msgstr "Création d'un profil"
 
-#: classes/pref/prefs.php:1028
-#: classes/pref/prefs.php:1056
+#: classes/pref/prefs.php:1028 classes/pref/prefs.php:1056
 msgid "(active)"
 msgstr "(actif)"
 
@@ -2199,47 +2110,43 @@ msgstr "Cocher pour activer le champ"
 msgid "Feed Title"
 msgstr "Titre du flux"
 
-#: classes/pref/feeds.php:587
-#: classes/pref/feeds.php:822
+#: classes/pref/feeds.php:587 classes/pref/feeds.php:822
 msgid "Update"
 msgstr "Mettre Ã  jour"
 
-#: classes/pref/feeds.php:602
-#: classes/pref/feeds.php:838
+#: classes/pref/feeds.php:602 classes/pref/feeds.php:838
 msgid "Article purging:"
 msgstr "Purge des articles :"
 
 #: classes/pref/feeds.php:632
-msgid "<b>Hint:</b> you need to fill in your login information if your feed requires authentication, except for Twitter feeds."
-msgstr "<b>Astuce :</b> vous devez renseigner vos informations d'identification si le flux nécessite une authentification, sauf pour les flux Twitter."
+msgid ""
+"<b>Hint:</b> you need to fill in your login information if your feed "
+"requires authentication, except for Twitter feeds."
+msgstr ""
+"<b>Astuce :</b> vous devez renseigner vos informations d'identification si "
+"le flux nécessite une authentification, sauf pour les flux Twitter."
 
-#: classes/pref/feeds.php:648
-#: classes/pref/feeds.php:867
+#: classes/pref/feeds.php:648 classes/pref/feeds.php:867
 msgid "Hide from Popular feeds"
 msgstr "Masquer dans la liste des flux populaires"
 
-#: classes/pref/feeds.php:660
-#: classes/pref/feeds.php:873
+#: classes/pref/feeds.php:660 classes/pref/feeds.php:873
 msgid "Include in e-mail digest"
 msgstr "Inclure dans la synthèse quotidienne par courrier Ã©lectronique"
 
-#: classes/pref/feeds.php:673
-#: classes/pref/feeds.php:879
+#: classes/pref/feeds.php:673 classes/pref/feeds.php:879
 msgid "Always display image attachments"
 msgstr "Toujours afficher les images jointes"
 
-#: classes/pref/feeds.php:686
-#: classes/pref/feeds.php:887
+#: classes/pref/feeds.php:686 classes/pref/feeds.php:887
 msgid "Do not embed images"
 msgstr "Ne pas intégrer les images"
 
-#: classes/pref/feeds.php:699
-#: classes/pref/feeds.php:895
+#: classes/pref/feeds.php:699 classes/pref/feeds.php:895
 msgid "Cache images locally"
 msgstr "Enregistrer localement les images"
 
-#: classes/pref/feeds.php:711
-#: classes/pref/feeds.php:901
+#: classes/pref/feeds.php:711 classes/pref/feeds.php:901
 msgid "Mark updated articles as unread"
 msgstr "Marquer les article mis Ã  jour comme non lus"
 
@@ -2257,10 +2164,11 @@ msgstr "Réinscription aux mises Ã  jour en push"
 
 #: classes/pref/feeds.php:760
 msgid "Resets PubSubHubbub subscription status for push-enabled feeds."
-msgstr "Réinitialiser l'état de l'inscription PubSubHubbub pour les flux en mise Ã  jour push."
+msgstr ""
+"Réinitialiser l'état de l'inscription PubSubHubbub pour les flux en mise Ã  "
+"jour push."
 
-#: classes/pref/feeds.php:1156
-#: classes/pref/feeds.php:1209
+#: classes/pref/feeds.php:1156 classes/pref/feeds.php:1209
 msgid "All done."
 msgstr "Tout est terminé."
 
@@ -2276,8 +2184,7 @@ msgstr "Flux inactifs"
 msgid "Edit selected feeds"
 msgstr "Modifier les flux sélectionnés"
 
-#: classes/pref/feeds.php:1325
-#: js/prefs.js:1764
+#: classes/pref/feeds.php:1325 js/prefs.js:1764
 msgid "Batch subscribe"
 msgstr "Abonnement par lots"
 
@@ -2310,12 +2217,17 @@ msgid "OPML"
 msgstr "OPML"
 
 #: classes/pref/feeds.php:1411
-msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings."
-msgstr "Avec OPML, vous pouvez exporter et importer vos flux, filtrer, Ã©tiquettes et réglages de Tiny Tiny RSS."
+msgid ""
+"Using OPML you can export and import your feeds, filters, labels and Tiny "
+"Tiny RSS settings."
+msgstr ""
+"Avec OPML, vous pouvez exporter et importer vos flux, filtrer, Ã©tiquettes et "
+"réglages de Tiny Tiny RSS."
 
 #: classes/pref/feeds.php:1411
 msgid "Only main settings profile can be migrated using OPML."
-msgstr "Seul le profil de réglages principal peut Ãªtre migré en utilisant OPML."
+msgstr ""
+"Seul le profil de réglages principal peut Ãªtre migré en utilisant OPML."
 
 #: classes/pref/feeds.php:1424
 msgid "Import my OPML"
@@ -2334,12 +2246,20 @@ msgid "Export OPML"
 msgstr "Exporter en OPML"
 
 #: classes/pref/feeds.php:1438
-msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below."
-msgstr "Votre fichier OPML peut Ãªtre publié et toute personne qui connaît l'adresse indiquée ci-dessous peut s'y abonner."
+msgid ""
+"Your OPML can be published publicly and can be subscribed by anyone who "
+"knows the URL below."
+msgstr ""
+"Votre fichier OPML peut Ãªtre publié et toute personne qui connaît l'adresse "
+"indiquée ci-dessous peut s'y abonner."
 
 #: classes/pref/feeds.php:1440
-msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds."
-msgstr "Les OPML publiés n'incluent pas vos réglages de Tiny Tiny RSS, les flux qui nécessitent une authentification, ou les flux cachés des Flux Populaires."
+msgid ""
+"Published OPML does not include your Tiny Tiny RSS settings, feeds that "
+"require authentication or feeds hidden from Popular feeds."
+msgstr ""
+"Les OPML publiés n'incluent pas vos réglages de Tiny Tiny RSS, les flux qui "
+"nécessitent une authentification, ou les flux cachés des Flux Populaires."
 
 #: classes/pref/feeds.php:1442
 msgid "Public OPML URL"
@@ -2354,8 +2274,12 @@ msgid "Firefox integration"
 msgstr "Intégration Ã  Firefox"
 
 #: classes/pref/feeds.php:1454
-msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below."
-msgstr "Ce site Tiny Tiny RSS peut Ãªtre utilisé comme lecteur de flux dans Firefox en cliquant sur le lien ci-dessous."
+msgid ""
+"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the "
+"link below."
+msgstr ""
+"Ce site Tiny Tiny RSS peut Ãªtre utilisé comme lecteur de flux dans Firefox "
+"en cliquant sur le lien ci-dessous."
 
 #: classes/pref/feeds.php:1461
 msgid "Click here to register this site as a feed reader."
@@ -2366,8 +2290,12 @@ msgid "Published & shared articles / Generated feeds"
 msgstr "Articles publiés et partagés / Flux générés"
 
 #: classes/pref/feeds.php:1471
-msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below."
-msgstr "Les articles publiés sont exportés comme un flux RSS public et toute personne qui connaît l'adresse indiquée ci-dessous peut s'y abonner."
+msgid ""
+"Published articles are exported as a public RSS feed and can be subscribed "
+"by anyone who knows the URL specified below."
+msgstr ""
+"Les articles publiés sont exportés comme un flux RSS public et toute "
+"personne qui connaît l'adresse indiquée ci-dessous peut s'y abonner."
 
 #: classes/pref/feeds.php:1479
 msgid "Display URL"
@@ -2386,22 +2314,26 @@ msgid "Unshare all articles"
 msgstr "Désactiver le partage pour tous les articles"
 
 #: classes/pref/feeds.php:1568
-msgid "These feeds have not been updated with new content for 3 months (oldest first):"
-msgstr "Les flux suivants n'ont pas Ã©té mis Ã  jour depuis 3 mois (par Ã¢ge décroissant) :"
+msgid ""
+"These feeds have not been updated with new content for 3 months (oldest "
+"first):"
+msgstr ""
+"Les flux suivants n'ont pas Ã©té mis Ã  jour depuis 3 mois (par Ã¢ge "
+"décroissant) :"
 
-#: classes/pref/feeds.php:1604
-#: classes/pref/feeds.php:1670
+#: classes/pref/feeds.php:1604 classes/pref/feeds.php:1670
 msgid "Click to edit feed"
 msgstr "Cliquez pour modifier le flux"
 
-#: classes/pref/feeds.php:1622
-#: classes/pref/feeds.php:1690
+#: classes/pref/feeds.php:1622 classes/pref/feeds.php:1690
 msgid "Unsubscribe from selected feeds"
 msgstr "Se désabonner des flux sélectionnés"
 
 #: classes/pref/feeds.php:1795
 msgid "Add one valid RSS feed per line (no feed detection is done)"
-msgstr "Ajoutez un flux RSS valide par ligne (aucune détection de flux n'est réalisée)"
+msgstr ""
+"Ajoutez un flux RSS valide par ligne (aucune détection de flux n'est "
+"réalisée)"
 
 #: classes/pref/feeds.php:1804
 msgid "Feeds to subscribe, One per line"
@@ -2420,9 +2352,8 @@ msgid "Refresh"
 msgstr "Actualiser"
 
 #: classes/pref/system.php:43
-#, fuzzy
 msgid "Clear log"
-msgstr "Ré-initialiser les couleurs"
+msgstr "Vider le journal"
 
 #: classes/pref/system.php:48
 msgid "Error"
@@ -2444,8 +2375,7 @@ msgstr "Date"
 msgid "Close article"
 msgstr "Fermer l'article"
 
-#: plugins/nsfw/init.php:29
-#: plugins/nsfw/init.php:40
+#: plugins/nsfw/init.php:29 plugins/nsfw/init.php:40
 msgid "Not work safe (click to toggle)"
 msgstr "Non convenable au travail (cliquer pour basculer)"
 
@@ -2455,7 +2385,8 @@ msgstr "Plugin NSFW"
 
 #: plugins/nsfw/init.php:77
 msgid "Tags to consider NSFW (comma-separated)"
-msgstr "Tags Ã  considérer non convenables au travail (séparés par des virgules)"
+msgstr ""
+"Tags Ã  considérer non convenables au travail (séparés par des virgules)"
 
 #: plugins/nsfw/init.php:98
 msgid "Configuration saved."
@@ -2473,15 +2404,12 @@ msgstr "Le mot de passe a Ã©té modifié."
 msgid "Old password is incorrect."
 msgstr "L'ancien mot de passe n'est pas correct."
 
-#: plugins/mailto/init.php:49
-#: plugins/mailto/init.php:55
-#: plugins/mail/init.php:64
-#: plugins/mail/init.php:70
+#: plugins/mailto/init.php:49 plugins/mailto/init.php:55
+#: plugins/mail/init.php:64 plugins/mail/init.php:70
 msgid "[Forwarded]"
 msgstr "[Transféré]"
 
-#: plugins/mailto/init.php:49
-#: plugins/mail/init.php:64
+#: plugins/mailto/init.php:49 plugins/mail/init.php:64
 msgid "Multiple articles"
 msgstr "Articles multiples"
 
@@ -2494,8 +2422,11 @@ msgid "Forward selected article(s) by email."
 msgstr "Transférer le ou les article(s) par mail."
 
 #: plugins/mailto/init.php:78
-msgid "You should be able to edit the message before sending in your mail client."
-msgstr "Vous devriez pouvoir modifier le message avant son envoi dans votre client de messagerie."
+msgid ""
+"You should be able to edit the message before sending in your mail client."
+msgstr ""
+"Vous devriez pouvoir modifier le message avant son envoi dans votre client "
+"de messagerie."
 
 #: plugins/mailto/init.php:83
 msgid "Close this dialog"
@@ -2506,8 +2437,13 @@ msgid "Bookmarklets"
 msgstr "Bookmarklets"
 
 #: plugins/bookmarklets/init.php:22
-msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it."
-msgstr "Glissez le lien ci-dessous dans la barre d'outil de votre navigateur, ouvrez le flux qui vous intéresse et cliquez sur le lien pour vous abonner Ã  ce flux."
+msgid ""
+"Drag the link below to your browser toolbar, open the feed you're interested "
+"in in your browser and click on the link to subscribe to it."
+msgstr ""
+"Glissez le lien ci-dessous dans la barre d'outil de votre navigateur, ouvrez "
+"le flux qui vous intéresse et cliquez sur le lien pour vous abonner Ã  ce "
+"flux."
 
 #: plugins/bookmarklets/init.php:26
 #, php-format
@@ -2527,9 +2463,13 @@ msgid "Import and export"
 msgstr "Importer et exporter"
 
 #: plugins/import_export/init.php:60
-#, fuzzy
-msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version."
-msgstr "Vous pouvez exporter et importer vos articles remarquables et archivés afin de les sauvegarder ou pour les transférer entre deux instances de tt-rss."
+msgid ""
+"You can export and import your Starred and Archived articles for safekeeping "
+"or when migrating between tt-rss instances of same version."
+msgstr ""
+"Vous pouvez exporter et importer vos articles remarquables et archivés afin "
+"de les sauvegarder ou pour les transférer entre deux instances de tt-rss "
+"(même version)."
 
 #: plugins/import_export/init.php:65
 msgid "Export my data"
@@ -2580,8 +2520,7 @@ msgstr "Impossible de charger le document XML."
 msgid "Prepare data"
 msgstr "Préparer les données"
 
-#: plugins/import_export/init.php:446
-#: plugins/googlereaderimport/init.php:92
+#: plugins/import_export/init.php:446 plugins/googlereaderimport/init.php:92
 msgid "No file uploaded."
 msgstr "Aucun fichier envoyé."
 
@@ -2601,8 +2540,7 @@ msgstr "Sujet :"
 msgid "Send e-mail"
 msgstr "Envoyer le mail"
 
-#: plugins/note/init.php:26
-#: plugins/note/note.js:11
+#: plugins/note/init.php:26 plugins/note/note.js:11
 msgid "Edit article note"
 msgstr "Modifier l'annotation de l'article"
 
@@ -2621,7 +2559,9 @@ msgstr "Importer les articles marqués ou partagés de Google Reader"
 
 #: plugins/googlereaderimport/init.php:357
 msgid "Paste your starred.json or shared.json into the form below."
-msgstr "Collez votre fichier starred.json ou shared.json dans le formulaire ci-dessous."
+msgstr ""
+"Collez votre fichier starred.json ou shared.json dans le formulaire ci-"
+"dessous."
 
 #: plugins/googlereaderimport/init.php:371
 msgid "Import my Starred items"
@@ -2631,35 +2571,29 @@ msgstr "Importer mes Ã©léments partagés"
 msgid "Linked"
 msgstr "Instances liées"
 
-#: plugins/instances/init.php:204
-#: plugins/instances/init.php:395
+#: plugins/instances/init.php:204 plugins/instances/init.php:395
 msgid "Instance"
 msgstr "Instance"
 
-#: plugins/instances/init.php:215
-#: plugins/instances/init.php:312
+#: plugins/instances/init.php:215 plugins/instances/init.php:312
 #: plugins/instances/init.php:404
 msgid "Instance URL"
 msgstr "URL de l'instance"
 
-#: plugins/instances/init.php:226
-#: plugins/instances/init.php:414
+#: plugins/instances/init.php:226 plugins/instances/init.php:414
 msgid "Access key:"
 msgstr "Clef d'accès :"
 
-#: plugins/instances/init.php:229
-#: plugins/instances/init.php:313
+#: plugins/instances/init.php:229 plugins/instances/init.php:313
 #: plugins/instances/init.php:417
 msgid "Access key"
 msgstr "Clef d'accès"
 
-#: plugins/instances/init.php:233
-#: plugins/instances/init.php:421
+#: plugins/instances/init.php:233 plugins/instances/init.php:421
 msgid "Use one access key for both linked instances."
 msgstr "Utilisez une clef d'accès pour les deux instances liées."
 
-#: plugins/instances/init.php:241
-#: plugins/instances/init.php:429
+#: plugins/instances/init.php:241 plugins/instances/init.php:429
 msgid "Generate new key"
 msgstr "Générer une nouvelle clef"
 
@@ -2668,8 +2602,12 @@ msgid "Link instance"
 msgstr "Lier une instance"
 
 #: plugins/instances/init.php:304
-msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:"
-msgstr "Vous pouvez connecter d'autres instances de Tiny Tiny RSS Ã  celle-ci pour partager les flux populaires. Pour cela, utilisez l'URL suivante :"
+msgid ""
+"You can connect other instances of Tiny Tiny RSS to this one to share "
+"Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:"
+msgstr ""
+"Vous pouvez connecter d'autres instances de Tiny Tiny RSS Ã  celle-ci pour "
+"partager les flux populaires. Pour cela, utilisez l'URL suivante :"
 
 #: plugins/instances/init.php:314
 msgid "Last connected"
@@ -2695,8 +2633,7 @@ msgstr "Partager par URL"
 msgid "You can share this article by the following unique URL:"
 msgstr "Vous pouvez partager cet article avec l'URL unique suivante :"
 
-#: plugins/updater/init.php:321
-#: plugins/updater/init.php:338
+#: plugins/updater/init.php:321 plugins/updater/init.php:338
 #: plugins/updater/updater.js:10
 msgid "Update Tiny Tiny RSS"
 msgstr "Mettre Ã  jour Tiny Tiny RSS"
@@ -2718,8 +2655,14 @@ msgid "Your database will not be modified."
 msgstr "Votre base de données ne sera pas modifiée."
 
 #: plugins/updater/init.php:360
-msgid "Your current tt-rss installation directory will not be modified. It will be renamed and left in the parent directory. You will be able to migrate all your customized files after update finishes."
-msgstr "Votre dossier tt-rss ne sera pas modifié. Il sera renommé et laissé tel quel dans le dossier parent. Vous pourrez recopier vos fichiers personnalisés après la mise Ã  jour."
+msgid ""
+"Your current tt-rss installation directory will not be modified. It will be "
+"renamed and left in the parent directory. You will be able to migrate all "
+"your customized files after update finishes."
+msgstr ""
+"Votre dossier tt-rss ne sera pas modifié. Il sera renommé et laissé tel quel "
+"dans le dossier parent. Vous pourrez recopier vos fichiers personnalisés "
+"après la mise Ã  jour."
 
 #: plugins/updater/init.php:361
 msgid "Ready to update."
@@ -2729,8 +2672,7 @@ msgstr "Prêt Ã  mettre Ã  jour."
 msgid "Start update"
 msgstr "Commencer la mise Ã  jour"
 
-#: js/feedlist.js:397
-#: js/feedlist.js:425
+#: js/feedlist.js:397 js/feedlist.js:425
 msgid "Mark all articles in %s as read?"
 msgstr "Marquer tous les articles de %s comme lus ?"
 
@@ -2751,8 +2693,13 @@ msgid "The error will be reported to the configured log destination."
 msgstr "L'erreur sera reportée vers la destination configurée."
 
 #: js/functions.js:107
-msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database."
-msgstr "Êtes-vous sûr de vouloir signaler cette erreur sur tt-rss.org ? Le rapport incluera des informations sur votre navigateur. Votre adresse IP sera sauvegardée dans la base de données."
+msgid ""
+"Are you sure to report this exception to tt-rss.org? The report will include "
+"your browser information. Your IP would be saved in the database."
+msgstr ""
+"Êtes-vous sûr de vouloir signaler cette erreur sur tt-rss.org ? Le rapport "
+"incluera des informations sur votre navigateur. Votre adresse IP sera "
+"sauvegardée dans la base de données."
 
 #: js/functions.js:236
 msgid "Click to close"
@@ -2843,15 +2790,18 @@ msgid "Create Filter"
 msgstr "Créer un filtre"
 
 #: js/functions.js:1191
-msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update."
-msgstr "Réinitialiser l'inscription ? Tiny Tiny RSS essayera de se réinscrire au hub de notification lors de la prochaine mise Ã  jour du flux."
+msgid ""
+"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification "
+"hub again on next feed update."
+msgstr ""
+"Réinitialiser l'inscription ? Tiny Tiny RSS essayera de se réinscrire au hub "
+"de notification lors de la prochaine mise Ã  jour du flux."
 
 #: js/functions.js:1202
 msgid "Subscription reset."
 msgstr "Abonnement réinitialisé."
 
-#: js/functions.js:1212
-#: js/tt-rss.js:677
+#: js/functions.js:1212 js/tt-rss.js:677
 msgid "Unsubscribe from %s?"
 msgstr "Se désabonner de %s ?"
 
@@ -2867,14 +2817,11 @@ msgstr "Veuillez saisir un titre pour cette catégorie :"
 msgid "Generate new syndication address for this feed?"
 msgstr "Générer une nouvelle adresse d'abonnement pour ce flux ?"
 
-#: js/functions.js:1359
-#: js/prefs.js:1231
+#: js/functions.js:1359 js/prefs.js:1231
 msgid "Trying to change address..."
 msgstr "Changement de l'adresse..."
 
-#: js/functions.js:1546
-#: js/tt-rss.js:422
-#: js/tt-rss.js:658
+#: js/functions.js:1546 js/tt-rss.js:422 js/tt-rss.js:658
 msgid "You can't edit this kind of feed."
 msgstr "Vous ne pouvez pas modifier ce type de flux."
 
@@ -2882,9 +2829,7 @@ msgstr "Vous ne pouvez pas modifier ce type de flux."
 msgid "Edit Feed"
 msgstr "Modifier le flux"
 
-#: js/functions.js:1567
-#: js/prefs.js:194
-#: js/prefs.js:749
+#: js/functions.js:1567 js/prefs.js:194 js/prefs.js:749
 msgid "Saving data..."
 msgstr "Enregistrement des données..."
 
@@ -2892,33 +2837,29 @@ msgstr "Enregistrement des données..."
 msgid "More Feeds"
 msgstr "D'autres flux"
 
-#: js/functions.js:1660
-#: js/functions.js:1770
-#: js/prefs.js:397
-#: js/prefs.js:427
-#: js/prefs.js:459
-#: js/prefs.js:642
-#: js/prefs.js:662
-#: js/prefs.js:1207
+#: js/functions.js:1660 js/functions.js:1770 js/prefs.js:397 js/prefs.js:427
+#: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1207
 #: js/prefs.js:1352
 msgid "No feeds are selected."
 msgstr "Aucun flux sélectionné."
 
 #: js/functions.js:1702
-msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed."
-msgstr "Supprimer les flux sélectionnés de l'archive ? Les flux contenant des articles stockés ne seront pas supprimés."
+msgid ""
+"Remove selected feeds from the archive? Feeds with stored articles will not "
+"be removed."
+msgstr ""
+"Supprimer les flux sélectionnés de l'archive ? Les flux contenant des "
+"articles stockés ne seront pas supprimés."
 
 #: js/functions.js:1741
 msgid "Feeds with update errors"
 msgstr "Flux avec des erreurs de mise Ã  jour"
 
-#: js/functions.js:1752
-#: js/prefs.js:1189
+#: js/functions.js:1752 js/prefs.js:1189
 msgid "Remove selected feeds?"
 msgstr "Supprimer les flux sélectionnés ?"
 
-#: js/functions.js:1755
-#: js/prefs.js:1192
+#: js/functions.js:1755 js/prefs.js:1192
 msgid "Removing selected feeds..."
 msgstr "Suppression des flux sélectionnés..."
 
@@ -2944,7 +2885,8 @@ msgstr "Veuillez saisir l'identifiant :"
 
 #: js/prefs.js:62
 msgid "Can't create user: no login specified."
-msgstr "Impossible de créer l'utilisateur : aucun identifiant n'a Ã©té spécifié."
+msgstr ""
+"Impossible de créer l'utilisateur : aucun identifiant n'a Ã©té spécifié."
 
 #: js/prefs.js:66
 msgid "Adding user..."
@@ -2974,23 +2916,23 @@ msgstr "Supprimer les Ã©tiquettes sélectionnées ?"
 msgid "Removing selected labels..."
 msgstr "Suppression des Ã©tiquettes sélectionnées..."
 
-#: js/prefs.js:295
-#: js/prefs.js:1393
+#: js/prefs.js:295 js/prefs.js:1393
 msgid "No labels are selected."
 msgstr "Aucune Ã©tiquette sélectionnée."
 
 #: js/prefs.js:309
-msgid "Remove selected users? Neither default admin nor your account will be removed."
-msgstr "Supprimer les utilisateurs sélectionnés ? L'administrateur par défaut et votre compte utilisateur ne seront pas supprimés."
+msgid ""
+"Remove selected users? Neither default admin nor your account will be "
+"removed."
+msgstr ""
+"Supprimer les utilisateurs sélectionnés ? L'administrateur par défaut et "
+"votre compte utilisateur ne seront pas supprimés."
 
 #: js/prefs.js:312
 msgid "Removing selected users..."
 msgstr "Suppression des utilisateurs sélectionnés..."
 
-#: js/prefs.js:326
-#: js/prefs.js:507
-#: js/prefs.js:528
-#: js/prefs.js:567
+#: js/prefs.js:326 js/prefs.js:507 js/prefs.js:528 js/prefs.js:567
 msgid "No users are selected."
 msgstr "Aucun utilisateur sélectionné."
 
@@ -3002,9 +2944,7 @@ msgstr "Supprimer les filtres sélectionnés ?"
 msgid "Removing selected filters..."
 msgstr "Suppression des filtres sélectionnés..."
 
-#: js/prefs.js:359
-#: js/prefs.js:597
-#: js/prefs.js:616
+#: js/prefs.js:359 js/prefs.js:597 js/prefs.js:616
 msgid "No filters are selected."
 msgstr "Aucun filtre sélectionné."
 
@@ -3022,7 +2962,8 @@ msgstr "Veuillez sélectionner un seul flux."
 
 #: js/prefs.js:418
 msgid "Erase all non-starred articles in selected feed?"
-msgstr "Supprimer tous les articles non-remarquables dans le flux sélectionné ?"
+msgstr ""
+"Supprimer tous les articles non-remarquables dans le flux sélectionné ?"
 
 #: js/prefs.js:421
 msgid "Clearing selected feed..."
@@ -3030,7 +2971,9 @@ msgstr "Nettoyage du flux sélectionné..."
 
 #: js/prefs.js:440
 msgid "How many days of articles to keep (0 - use default)?"
-msgstr "Combien de jours faut-il conserver les articles (0 pour utiliser la valeur par défaut) ?"
+msgstr ""
+"Combien de jours faut-il conserver les articles (0 pour utiliser la valeur "
+"par défaut) ?"
 
 #: js/prefs.js:443
 msgid "Purging selected feed..."
@@ -3044,9 +2987,7 @@ msgstr "L'identifiant ne peut pas Ãªtre vide."
 msgid "Saving user..."
 msgstr "Sauvegarde de l'utilisateur..."
 
-#: js/prefs.js:512
-#: js/prefs.js:533
-#: js/prefs.js:572
+#: js/prefs.js:512 js/prefs.js:533 js/prefs.js:572
 msgid "Please select only one user."
 msgstr "Veuillez sélectionner un seul utilisateur."
 
@@ -3090,8 +3031,7 @@ msgstr "Import OPML"
 msgid "Please choose an OPML file first."
 msgstr "Veuillez d'abord sélectionner un fichier OPML."
 
-#: js/prefs.js:815
-#: plugins/import_export/import_export.js:115
+#: js/prefs.js:815 plugins/import_export/import_export.js:115
 #: plugins/googlereaderimport/init.js:45
 msgid "Importing, please wait..."
 msgstr "Import en cours, veuillez patienter..."
@@ -3101,8 +3041,11 @@ msgid "Reset to defaults?"
 msgstr "Revenir aux valeurs par défaut ?"
 
 #: js/prefs.js:1096
-msgid "Remove category %s? Any nested feeds would be placed into Uncategorized."
-msgstr "Supprimer la categorie %s ? Tous les flux enfants seront placés dans Sans catégorie."
+msgid ""
+"Remove category %s? Any nested feeds would be placed into Uncategorized."
+msgstr ""
+"Supprimer la categorie %s ? Tous les flux enfants seront placés dans Sans "
+"catégorie."
 
 #: js/prefs.js:1102
 msgid "Removing category..."
@@ -3150,7 +3093,9 @@ msgstr "Recalcul du score des flux sélectionnés..."
 
 #: js/prefs.js:1359
 msgid "Rescore all articles? This operation may take a lot of time."
-msgstr "Recalculer le score de tous les articles ? Cette opération peut prendre beaucoup de temps."
+msgstr ""
+"Recalculer le score de tous les articles ? Cette opération peut prendre "
+"beaucoup de temps."
 
 #: js/prefs.js:1362
 msgid "Rescoring feeds..."
@@ -3165,8 +3110,11 @@ msgid "Settings Profiles"
 msgstr "Paramètres des profils"
 
 #: js/prefs.js:1425
-msgid "Remove selected profiles? Active and default profiles will not be removed."
-msgstr "Supprimer les profils sélectionnés ? Les profils actifs et par défaut ne seront pas supprimés."
+msgid ""
+"Remove selected profiles? Active and default profiles will not be removed."
+msgstr ""
+"Supprimer les profils sélectionnés ? Les profils actifs et par défaut ne "
+"seront pas supprimés."
 
 #: js/prefs.js:1428
 msgid "Removing selected profiles..."
@@ -3176,13 +3124,11 @@ msgstr "Suppression des profils sélectionnés..."
 msgid "No profiles are selected."
 msgstr "Aucun profil sélectionné."
 
-#: js/prefs.js:1451
-#: js/prefs.js:1504
+#: js/prefs.js:1451 js/prefs.js:1504
 msgid "Activate selected profile?"
 msgstr "Activer le profil selectionné ?"
 
-#: js/prefs.js:1467
-#: js/prefs.js:1520
+#: js/prefs.js:1467 js/prefs.js:1520
 msgid "Please choose a profile to activate."
 msgstr "Veuillez sélectionner un profil Ã  activer."
 
@@ -3192,10 +3138,11 @@ msgstr "Création d'un profil..."
 
 #: js/prefs.js:1528
 msgid "This will invalidate all previously generated feed URLs. Continue?"
-msgstr "Ceci va invalider toutes les URL de flux générées auparavant. Souhaitez-vous continuer ?"
+msgstr ""
+"Ceci va invalider toutes les URL de flux générées auparavant. Souhaitez-vous "
+"continuer ?"
 
-#: js/prefs.js:1531
-#: js/prefs.js:1550
+#: js/prefs.js:1531 js/prefs.js:1550
 msgid "Clearing URLs..."
 msgstr "Nettoyage des URL..."
 
@@ -3205,7 +3152,9 @@ msgstr "URL générées supprimées."
 
 #: js/prefs.js:1547
 msgid "This will invalidate all previously shared article URLs. Continue?"
-msgstr "Ceci va invalider tous les articles partagés par URL. Souhaitez-vous continuer ?"
+msgstr ""
+"Ceci va invalider tous les articles partagés par URL. Souhaitez-vous "
+"continuer ?"
 
 #: js/prefs.js:1557
 msgid "Shared URLs cleared."
@@ -3225,7 +3174,7 @@ msgstr "Effacer les données pour ce plugin ?"
 
 #: js/prefs.js:1824
 msgid "Clear all messages in the error log?"
-msgstr ""
+msgstr "Vider le journal des erreurs ?"
 
 #: js/tt-rss.js:127
 msgid "Mark all articles as read?"
@@ -3251,8 +3200,7 @@ msgstr "Sélectionner des Ã©léments par tags"
 msgid "You can't unsubscribe from the category."
 msgstr "Vous ne pouvez pas vous désabonner de la catégorie."
 
-#: js/tt-rss.js:671
-#: js/tt-rss.js:825
+#: js/tt-rss.js:671 js/tt-rss.js:825
 msgid "Please select some feed first."
 msgstr "Veuillez d'abord sélectionner un flux."
 
@@ -3298,16 +3246,9 @@ msgid_plural "%d articles selected"
 msgstr[0] "%d article sélectionné"
 msgstr[1] "%d articles sélectionnés"
 
-#: js/viewfeed.js:726
-#: js/viewfeed.js:754
-#: js/viewfeed.js:781
-#: js/viewfeed.js:844
-#: js/viewfeed.js:878
-#: js/viewfeed.js:998
-#: js/viewfeed.js:1041
-#: js/viewfeed.js:1094
-#: js/viewfeed.js:2071
-#: plugins/mailto/init.js:7
+#: js/viewfeed.js:726 js/viewfeed.js:754 js/viewfeed.js:781 js/viewfeed.js:844
+#: js/viewfeed.js:878 js/viewfeed.js:998 js/viewfeed.js:1041
+#: js/viewfeed.js:1094 js/viewfeed.js:2071 plugins/mailto/init.js:7
 #: plugins/mail/mail.js:7
 msgid "No articles are selected."
 msgstr "Aucun article sélectionné."
@@ -3337,8 +3278,11 @@ msgstr[0] "Restaurer %d article archivé ?"
 msgstr[1] "Restaurer %d articles archivés ?"
 
 #: js/viewfeed.js:1055
-msgid "Please note that unstarred articles might get purged on next feed update."
-msgstr "Veuillez noter que les articles non marqués risquent d'être purgés Ã  la prochaine mise Ã  jour du flux."
+msgid ""
+"Please note that unstarred articles might get purged on next feed update."
+msgstr ""
+"Veuillez noter que les articles non marqués risquent d'être purgés Ã  la "
+"prochaine mise Ã  jour du flux."
 
 #: js/viewfeed.js:1100
 msgid "Mark %d selected article in %s as read?"
@@ -3403,10 +3347,10 @@ msgstr "URL de l'article :"
 
 #: plugins/embed_original/init.js:6
 msgid "Sorry, your browser does not support sandboxed iframes."
-msgstr "Malheureusement, votre navigateur ne supporte pas les iframes sécurisées."
+msgstr ""
+"Malheureusement, votre navigateur ne supporte pas les iframes sécurisées."
 
-#: plugins/mailto/init.js:21
-#: plugins/mail/mail.js:21
+#: plugins/mailto/init.js:21 plugins/mail/mail.js:21
 msgid "Forward article by email"
 msgstr "Transférer l'article par email"
 
@@ -3415,10 +3359,18 @@ msgid "Export Data"
 msgstr "Exporter les données"
 
 #: plugins/import_export/import_export.js:40
-msgid "Finished, exported %d article. You can download the data <a class='visibleLink' href='%u'>here</a>."
-msgid_plural "Finished, exported %d articles. You can download the data <a class='visibleLink' href='%u'>here</a>."
-msgstr[0] "Terminé, %d article exporté. Vous pouvez télécharger les données <a class='visibleLink' href='%u'>ici</a>."
-msgstr[1] "Terminé, %d articles exportés. Vous pouvez télécharger les données <a class='visibleLink' href='%u'>ici</a>."
+msgid ""
+"Finished, exported %d article. You can download the data <a "
+"class='visibleLink' href='%u'>here</a>."
+msgid_plural ""
+"Finished, exported %d articles. You can download the data <a "
+"class='visibleLink' href='%u'>here</a>."
+msgstr[0] ""
+"Terminé, %d article exporté. Vous pouvez télécharger les données <a "
+"class='visibleLink' href='%u'>ici</a>."
+msgstr[1] ""
+"Terminé, %d articles exportés. Vous pouvez télécharger les données <a "
+"class='visibleLink' href='%u'>ici</a>."
 
 #: plugins/import_export/import_export.js:93
 msgid "Data Import"
@@ -3456,8 +3408,7 @@ msgstr "Supprimer les instances sélectionnées ?"
 msgid "Removing selected instances..."
 msgstr "Suppression des instances sélectionnées..."
 
-#: plugins/instances/instances.js:139
-#: plugins/instances/instances.js:151
+#: plugins/instances/instances.js:139 plugins/instances/instances.js:151
 msgid "No instances are selected."
 msgstr "Aucune instance sélectionnée."
 
@@ -3470,8 +3421,12 @@ msgid "Share article by URL"
 msgstr "Partager l'article par URL"
 
 #: plugins/updater/updater.js:58
-msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue."
-msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« yes Â» pour continuer."
+msgid ""
+"Backup your tt-rss directory before continuing. Please type 'yes' to "
+"continue."
+msgstr ""
+"Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« yes Â» "
+"pour continuer."
 
 #~ msgid "(Un)hide empty categories"
 #~ msgstr "Masquer/afficher les catégories vides"
@@ -3485,8 +3440,13 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "These feeds have not been updated because of errors:"
 #~ msgstr "Ces flux n'ont pas Ã©té mis Ã  jour Ã  cause d'erreurs :"
 
-#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings."
-#~ msgstr "Votre navigateur ne gère pas JavaScript, alors que c'est nécessaire pour le bon fonctionnement de ce logiciel. Veuillez modifier la configuration de votre navigateur."
+#~ msgid ""
+#~ "Your browser doesn't support Javascript, which is required for this "
+#~ "application to function properly. Please check your browser settings."
+#~ msgstr ""
+#~ "Votre navigateur ne gère pas JavaScript, alors que c'est nécessaire pour "
+#~ "le bon fonctionnement de ce logiciel. Veuillez modifier la configuration "
+#~ "de votre navigateur."
 
 #~ msgid "Hello,"
 #~ msgstr "Bonjour,"
@@ -3577,7 +3537,8 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "Sélectionner un thème"
 
 #~ msgid "I have scanned the code and would like to enable OTP"
-#~ msgstr "J'ai scanné le code et je veux activer les mots de passe Ã  usage unique"
+#~ msgstr ""
+#~ "J'ai scanné le code et je veux activer les mots de passe Ã  usage unique"
 
 #~ msgid "close"
 #~ msgstr "fermer"
@@ -3585,8 +3546,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Playing..."
 #~ msgstr "Lecture..."
 
-#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)"
-#~ msgstr "Envoi du fichier impossible. Vous devriez peut-être modifier la valeur de upload_max_filesize dans PHP.ini (valeur courante : %s)"
+#~ msgid ""
+#~ "Could not upload file. You might need to adjust upload_max_filesize in "
+#~ "PHP.ini (current value = %s)"
+#~ msgstr ""
+#~ "Envoi du fichier impossible. Vous devriez peut-être modifier la valeur de "
+#~ "upload_max_filesize dans PHP.ini (valeur courante : %s)"
 
 #~ msgid "Default interval between feed updates"
 #~ msgstr "Intervalle par défaut entre les mises Ã  jour de flux"
@@ -3606,8 +3571,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Please backup your database before proceeding."
 #~ msgstr "Merci de sauvegardez votre base de données avant de poursuivre."
 
-#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (<b>%d</b> to <b>%d</b>)."
-#~ msgstr "La base de données de Tiny Tiny RSS a besoin d'être mise Ã  jour (version <b>%d</b> Ã  <b>%d</b>)."
+#~ msgid ""
+#~ "Your Tiny Tiny RSS database needs update to the latest version (<b>%d</b> "
+#~ "to <b>%d</b>)."
+#~ msgstr ""
+#~ "La base de données de Tiny Tiny RSS a besoin d'être mise Ã  jour (version "
+#~ "<b>%d</b> Ã  <b>%d</b>)."
 
 #~ msgid "Performing updates..."
 #~ msgstr "Exécution des mises Ã  jour..."
@@ -3625,18 +3594,29 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "ERREUR !"
 
 #~ msgid "Finished. Performed <b>%d</b> update up to schema version <b>%d</b>."
-#~ msgid_plural "Finished. Performed <b>%d</b> updates up to schema version <b>%d</b>."
-#~ msgstr[0] "Terminé. <b>%d</b> modification a Ã©té effectuée pour parvenir Ã  la version de schéma <b>%d</b>."
-#~ msgstr[1] "Terminé. <b>%d</b> modifications ont Ã©té effectuées pour parvenir Ã  la version de schéma <b>%d</b>."
+#~ msgid_plural ""
+#~ "Finished. Performed <b>%d</b> updates up to schema version <b>%d</b>."
+#~ msgstr[0] ""
+#~ "Terminé. <b>%d</b> modification a Ã©té effectuée pour parvenir Ã  la "
+#~ "version de schéma <b>%d</b>."
+#~ msgstr[1] ""
+#~ "Terminé. <b>%d</b> modifications ont Ã©té effectuées pour parvenir Ã  la "
+#~ "version de schéma <b>%d</b>."
 
 #~ msgid "Your database schema is from a newer version of Tiny Tiny RSS."
-#~ msgstr "Votre schéma de base de données provient d'une version plus récente de Tiny Tiny RSS."
+#~ msgstr ""
+#~ "Votre schéma de base de données provient d'une version plus récente de "
+#~ "Tiny Tiny RSS."
 
 #~ msgid "Found schema version: <b>%d</b>, required: <b>%d</b>."
 #~ msgstr "Version du schéma trouvée : <b>%d</b>, requise : <b>%d</b>."
 
-#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue."
-#~ msgstr "Mise Ã  jour du schéma impossible. Veuillez mettre Ã  jour les fichiers de Tiny Tiny RSS vers une version plus récente et continuer."
+#~ msgid ""
+#~ "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer "
+#~ "version and continue."
+#~ msgstr ""
+#~ "Mise Ã  jour du schéma impossible. Veuillez mettre Ã  jour les fichiers de "
+#~ "Tiny Tiny RSS vers une version plus récente et continuer."
 
 #~ msgid "Mark feed as read"
 #~ msgstr "Marquer le flux comme lu"
@@ -3644,8 +3624,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Enable external API"
 #~ msgstr "Activer les API externes"
 
-#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds"
-#~ msgstr "Avec cette option activée, les entêtes dans les flux spéciaux et par Ã©tiquettes sont regroupés par flux"
+#~ msgid ""
+#~ "When this option is enabled, headlines in Special feeds and Labels are "
+#~ "grouped by feeds"
+#~ msgstr ""
+#~ "Avec cette option activée, les entêtes dans les flux spéciaux et par "
+#~ "étiquettes sont regroupés par flux"
 
 #~ msgid "Title or Content"
 #~ msgstr "Titre ou contenu"
@@ -3671,8 +3655,15 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Modify score"
 #~ msgstr "Modifier le score"
 
-#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once."
-#~ msgstr "Cette option est utile si vous lisez des articles venant d'agrégateurs de type Â«planet», dans lesquels certains flux se recoupent largement. Lorsque cette option est désactivée, les articles en double sont affichés en un seul exemplaire."
+#~ msgid ""
+#~ "This option is useful when you are reading several planet-type "
+#~ "aggregators with partially colliding userbase. When disabled, it forces "
+#~ "same posts from different feeds to appear only once."
+#~ msgstr ""
+#~ "Cette option est utile si vous lisez des articles venant d'agrégateurs de "
+#~ "type Â«planet», dans lesquels certains flux se recoupent largement. "
+#~ "Lorsque cette option est désactivée, les articles en double sont affichés "
+#~ "en un seul exemplaire."
 
 #~ msgid "Date syntax appears to be correct:"
 #~ msgstr "La syntaxe des dates semble Ãªtre correcte :"
@@ -3695,7 +3686,8 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "Marquer tous les articles visibles de %s comme lus ?"
 
 #~ msgid "Form secret key incorrect. Please enable cookies and try again."
-#~ msgstr "Clé de formulaire incorecte. Veuillez activer les cookies et réessayer."
+#~ msgstr ""
+#~ "Clé de formulaire incorecte. Veuillez activer les cookies et réessayer."
 
 #~ msgid "Score"
 #~ msgstr "Score"
@@ -3707,7 +3699,8 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "Activer les options voulues avec les cases Ã  cocher sur la droite:"
 
 #~ msgid "New articles available in this feed (click to show)"
-#~ msgstr "Nouveaux articles disponibles dans ce flux (cliquer pour les afficher)"
+#~ msgstr ""
+#~ "Nouveaux articles disponibles dans ce flux (cliquer pour les afficher)"
 
 #~ msgid "Share on identi.ca"
 #~ msgstr "Partager sur identi.ca"
@@ -3739,8 +3732,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Back to feeds"
 #~ msgstr "Retour aux flux"
 
-#~ msgid "This will clear your stored authentication information for Twitter. Continue?"
-#~ msgstr "Cela va effacer les informations d'authentification pour Twitter. Voulez-vous continuer ?"
+#~ msgid ""
+#~ "This will clear your stored authentication information for Twitter. "
+#~ "Continue?"
+#~ msgstr ""
+#~ "Cela va effacer les informations d'authentification pour Twitter. Voulez-"
+#~ "vous continuer ?"
 
 #~ msgid "Finished: %d articles processed, %d imported, %d feeds created."
 #~ msgstr "Terminé : %d articles traités, %d importés, %d flux créés."
@@ -3771,7 +3768,8 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "Naviguer dans les articles"
 
 #~ msgid "Mark articles below/above active one as read"
-#~ msgstr "Marquer les articles au-dessous/au-dessus de l'article actif comme lus"
+#~ msgstr ""
+#~ "Marquer les articles au-dessous/au-dessus de l'article actif comme lus"
 
 #~ msgid "Scroll article content"
 #~ msgstr "Faire déflier le contenu de l'article"
@@ -3800,8 +3798,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Focus search (if present)"
 #~ msgstr "Focus sur la recherche (si affichée)"
 
-#~ msgid "<b>Note:</b> not all actions may be available, depending on Tiny Tiny RSS configuration and your access level."
-#~ msgstr "<b>Note :</b> certaines actions peuvent ne pas Ãªtre disponibles, selon la configuration de Tiny Tiny RSS et vos permissions."
+#~ msgid ""
+#~ "<b>Note:</b> not all actions may be available, depending on Tiny Tiny RSS "
+#~ "configuration and your access level."
+#~ msgstr ""
+#~ "<b>Note :</b> certaines actions peuvent ne pas Ãªtre disponibles, selon la "
+#~ "configuration de Tiny Tiny RSS et vos permissions."
 
 #~ msgid "Open article in new tab"
 #~ msgstr "Ouvrir les articles dans un nouvel onglet"
@@ -3867,7 +3869,9 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "S'inscrire via Twitter"
 
 #~ msgid "Could not connect to Twitter. Refresh the page or try again later."
-#~ msgstr "Impossible de se connecter Ã  Twitter. Rafraichissez la page ou essayez Ã  nouveau plus tard."
+#~ msgstr ""
+#~ "Impossible de se connecter Ã  Twitter. Rafraichissez la page ou essayez Ã  "
+#~ "nouveau plus tard."
 
 #~ msgid "Congratulations! You have successfully registered with Twitter."
 #~ msgstr "Félicitation ! Vous vous Ãªtes inscrit via Twitter avec succès."
@@ -3888,7 +3892,8 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgstr "Aucune catégorie de flux définie."
 
 #~ msgid "<b>Hint:</b> you can drag feeds and categories around."
-#~ msgstr "<b>Astuce :</b> vous pouvez faire glisser les flux et les catagories."
+#~ msgstr ""
+#~ "<b>Astuce :</b> vous pouvez faire glisser les flux et les catagories."
 
 #~ msgid "Subscribing using bookmarklet"
 #~ msgstr "S'abonner via bookmarklet"
@@ -3896,11 +3901,19 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Twitter"
 #~ msgstr "Twitter"
 
-#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com."
-#~ msgstr "Avant de mettre Ã  jour vos flux Twitter, vous devez enregistrer cette instance de Tiny Tiny RSS avec Twitter.com."
+#~ msgid ""
+#~ "Before you can update your Twitter feeds, you must register this instance "
+#~ "of Tiny Tiny RSS with Twitter.com."
+#~ msgstr ""
+#~ "Avant de mettre Ã  jour vos flux Twitter, vous devez enregistrer cette "
+#~ "instance de Tiny Tiny RSS avec Twitter.com."
 
-#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds."
-#~ msgstr "Vous vous Ãªtes inscrit avec succès sur Twitter.com et vous devriez Ãªtre en mesure d'accéder Ã  vos flux Twitter."
+#~ msgid ""
+#~ "You have been successfully registered with Twitter.com and should be able "
+#~ "to access your Twitter feeds."
+#~ msgstr ""
+#~ "Vous vous Ãªtes inscrit avec succès sur Twitter.com et vous devriez Ãªtre "
+#~ "en mesure d'accéder Ã  vos flux Twitter."
 
 #~ msgid "Register with Twitter.com"
 #~ msgstr "S'inscrire sur Twitter.com"
@@ -3917,8 +3930,12 @@ msgstr "Sauvegardez votre dossier tt-rss avant de continuer. Veuillez taper Â« y
 #~ msgid "Filter Test Results"
 #~ msgstr "Résultats du test du filtre"
 
-#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles."
-#~ msgstr "Lorsque vous cliquez sur Â« Marquer comme lus Â», le prochain flux contenant des articles non lus est automatiquement affiché"
+#~ msgid ""
+#~ "When \"Mark as read\" button is clicked in toolbar, automatically open "
+#~ "next feed with unread articles."
+#~ msgstr ""
+#~ "Lorsque vous cliquez sur Â« Marquer comme lus Â», le prochain flux "
+#~ "contenant des articles non lus est automatiquement affiché"
 
 #~ msgid "Uses server timezone"
 #~ msgstr "Utilise le fuseau horaire du serveur"
index 4deddb30e549a6d47e7c9cfc3b280dcc3011e25c..030e44d97cd42653b3d9a7765341e540ec542f45 100644 (file)
Binary files a/locale/sv_SE/LC_MESSAGES/messages.mo and b/locale/sv_SE/LC_MESSAGES/messages.mo differ
index 7ab5bd160bed5afee0b22185847efd454a507b73..1667bfba5273233600a0c69afb572d42624758c0 100644 (file)
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Tiny Tiny RSS sv_SE\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-15 09:45+0400\n"
-"PO-Revision-Date: 2013-05-14 03:37+0100\n"
+"POT-Creation-Date: 2013-04-29 15:58+0400\n"
+"PO-Revision-Date: 2013-05-24 19:41+0100\n"
 "Last-Translator: Mattias Tengblad <mst@eyesx.com>\n"
 "Language-Team: Mattias Tengblad <mst@eyesx.com>\n"
 "Language: Svenska\n"
@@ -55,49 +55,39 @@ msgstr "3 mÃ¥nader"
 msgid "Default interval"
 msgstr "Standardintervall"
 
-#: backend.php:83
-#: backend.php:93
+#: backend.php:83 backend.php:93
 msgid "Disable updates"
 msgstr "Inaktivera uppdateringar"
 
-#: backend.php:84
-#: backend.php:94
+#: backend.php:84 backend.php:94
 msgid "Each 15 minutes"
 msgstr "Varje kvart"
 
-#: backend.php:85
-#: backend.php:95
+#: backend.php:85 backend.php:95
 msgid "Each 30 minutes"
 msgstr "Varje halvtimma"
 
-#: backend.php:86
-#: backend.php:96
+#: backend.php:86 backend.php:96
 msgid "Hourly"
 msgstr "Varje timma"
 
-#: backend.php:87
-#: backend.php:97
+#: backend.php:87 backend.php:97
 msgid "Each 4 hours"
 msgstr "Var 4:e timme"
 
-#: backend.php:88
-#: backend.php:98
+#: backend.php:88 backend.php:98
 msgid "Each 12 hours"
 msgstr "Var 12:e timme"
 
-#: backend.php:89
-#: backend.php:99
+#: backend.php:89 backend.php:99
 msgid "Daily"
 msgstr "Dagligen"
 
-#: backend.php:90
-#: backend.php:100
+#: backend.php:90 backend.php:100
 msgid "Weekly"
 msgstr "Veckovis"
 
-#: backend.php:103
-#: classes/pref/users.php:119
-#: classes/pref/system.php:51
+#: backend.php:103 classes/pref/users.php:123 classes/pref/system.php:44
 msgid "User"
 msgstr "Användare"
 
@@ -110,12 +100,20 @@ msgid "Administrator"
 msgstr "Administratör"
 
 #: errors.php:9
-msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it."
-msgstr "Denna sida behöver XmlHttpRequest för att kunna köras. Din webbläsare verkar inte stöda det."
+msgid ""
+"This program requires XmlHttpRequest to function properly. Your browser "
+"doesn't seem to support it."
+msgstr ""
+"Denna sida behöver XmlHttpRequest för att kunna köras. Din webbläsare verkar "
+"inte stöda det."
 
 #: errors.php:12
-msgid "This program requires cookies to function properly. Your browser doesn't seem to support them."
-msgstr "Denna sida behöver cookies för att fungera. Din webbläsare verkar inte stöda det."
+msgid ""
+"This program requires cookies to function properly. Your browser doesn't "
+"seem to support them."
+msgstr ""
+"Denna sida behöver cookies för att fungera. Din webbläsare verkar inte stöda "
+"det."
 
 #: errors.php:15
 msgid "Backend sanity check failed."
@@ -126,8 +124,12 @@ msgid "Frontend sanity check failed."
 msgstr "Sanitetskontroll för \"frontend\" misslyckades."
 
 #: errors.php:19
-msgid "Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please update&lt;/a&gt;."
-msgstr "Felaktig version för databasshema. &lt;a href='db-updater.php'&gt;Vänligen uppdatera&lt;/a&gt;."
+msgid ""
+"Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please "
+"update&lt;/a&gt;."
+msgstr ""
+"Felaktig version för databasshema. &lt;a href='db-updater.php'&gt;Vänligen "
+"uppdatera&lt;/a&gt;."
 
 #: errors.php:21
 msgid "Request not authorized."
@@ -138,8 +140,12 @@ msgid "No operation to perform."
 msgstr "Ingen aktivtet vald."
 
 #: errors.php:25
-msgid "Could not display feed: query failed. Please check label match syntax or local configuration."
-msgstr "Kunde inte visa flöde: sökning misslyckades. Vänligen kontrollera att etiketten har rätt syntax och den lokala konfigurationen"
+msgid ""
+"Could not display feed: query failed. Please check label match syntax or "
+"local configuration."
+msgstr ""
+"Kunde inte visa flöde: sökning misslyckades. Vänligen kontrollera att "
+"etiketten har rätt syntax och den lokala konfigurationen"
 
 #: errors.php:27
 msgid "Denied. Your access level is insufficient to access this page."
@@ -150,47 +156,30 @@ msgid "Configuration check failed"
 msgstr "Kontrollen av konfiguration misslyckades"
 
 #: errors.php:31
-msgid "Your version of MySQL is not currently supported. Please see official site for more information."
-msgstr "Din version av MySQL stöds inte för närvarande. Vänligen se den officiella webbplatsen för mer information."
+msgid ""
+"Your version of MySQL is not currently supported. Please see official site "
+"for more information."
+msgstr ""
+"Din version av MySQL stöds inte för närvarande. Vänligen se den officiella "
+"webbplatsen för mer information."
 
 #: errors.php:35
 msgid "SQL escaping test failed, check your database and PHP configuration"
-msgstr "Test för \"SQL escaping\" misslyckades, kontrollera databas och PHP-konfiguration"
-
-#: index.php:128
-#: index.php:145
-#: index.php:265
-#: prefs.php:97
-#: classes/backend.php:5
-#: classes/pref/labels.php:296
-#: classes/pref/filters.php:678
-#: classes/pref/feeds.php:1372
-#: js/feedlist.js:128
-#: js/feedlist.js:441
-#: js/functions.js:446
-#: js/functions.js:784
-#: js/functions.js:1194
-#: js/functions.js:1330
-#: js/functions.js:1642
-#: js/prefs.js:86
-#: js/prefs.js:576
-#: js/prefs.js:666
-#: js/prefs.js:867
-#: js/prefs.js:1454
-#: js/prefs.js:1507
-#: js/prefs.js:1566
-#: js/prefs.js:1583
-#: js/prefs.js:1599
-#: js/prefs.js:1619
-#: js/prefs.js:1792
-#: js/prefs.js:1808
-#: js/prefs.js:1826
-#: js/tt-rss.js:507
-#: js/tt-rss.js:524
-#: js/viewfeed.js:821
-#: js/viewfeed.js:1250
-#: plugins/import_export/import_export.js:17
-#: plugins/updater/updater.js:17
+msgstr ""
+"Test för \"SQL escaping\" misslyckades, kontrollera databas och PHP-"
+"konfiguration"
+
+#: index.php:128 index.php:145 index.php:265 prefs.php:98
+#: classes/backend.php:5 classes/pref/labels.php:296
+#: classes/pref/filters.php:680 classes/pref/feeds.php:1388
+#: plugins/digest/digest_body.php:61 js/feedlist.js:128 js/feedlist.js:439
+#: js/functions.js:446 js/functions.js:784 js/functions.js:1194
+#: js/functions.js:1330 js/functions.js:1642 js/prefs.js:86 js/prefs.js:576
+#: js/prefs.js:666 js/prefs.js:867 js/prefs.js:1454 js/prefs.js:1507
+#: js/prefs.js:1566 js/prefs.js:1583 js/prefs.js:1599 js/prefs.js:1615
+#: js/prefs.js:1634 js/prefs.js:1807 js/prefs.js:1823 js/tt-rss.js:506
+#: js/tt-rss.js:523 js/viewfeed.js:820 js/viewfeed.js:1249
+#: plugins/import_export/import_export.js:17 plugins/updater/updater.js:17
 msgid "Loading, please wait..."
 msgstr "Laddar, vänta..."
 
@@ -210,21 +199,15 @@ msgstr "Adaptivt"
 msgid "All Articles"
 msgstr "Alla artiklar"
 
-#: index.php:167
-#: include/functions.php:2008
-#: classes/feeds.php:98
+#: index.php:167 include/functions.php:2007 classes/feeds.php:98
 msgid "Starred"
 msgstr "Stjärnmärkta"
 
-#: index.php:168
-#: include/functions.php:2009
-#: classes/feeds.php:99
+#: index.php:168 include/functions.php:2008 classes/feeds.php:99
 msgid "Published"
 msgstr "Publicerade"
 
-#: index.php:169
-#: classes/feeds.php:85
-#: classes/feeds.php:97
+#: index.php:169 classes/feeds.php:85 classes/feeds.php:97
 msgid "Unread"
 msgstr "Olästa"
 
@@ -260,13 +243,9 @@ msgstr "Äldst först"
 msgid "Title"
 msgstr "Titel"
 
-#: index.php:185
-#: index.php:233
-#: include/functions.php:1998
-#: classes/feeds.php:103
-#: classes/feeds.php:424
-#: js/FeedTree.js:128
-#: js/FeedTree.js:156
+#: index.php:185 index.php:233 include/functions.php:1997
+#: classes/feeds.php:103 classes/feeds.php:441 js/FeedTree.js:128
+#: js/FeedTree.js:156 plugins/digest/digest.js:647
 msgid "Mark as read"
 msgstr "Markera som läst"
 
@@ -306,8 +285,7 @@ msgstr "Sök..."
 msgid "Feed actions:"
 msgstr "FlödesÃ¥tgärder:"
 
-#: index.php:228
-#: classes/handler/public.php:562
+#: index.php:228 classes/handler/public.php:559
 msgid "Subscribe to feed..."
 msgstr "Prenumerera pÃ¥ flöde..."
 
@@ -319,9 +297,7 @@ msgstr "Redigera detta flöde..."
 msgid "Rescore feed"
 msgstr "Beräkna flödets poäng pÃ¥ nytt"
 
-#: index.php:231
-#: classes/pref/feeds.php:746
-#: classes/pref/feeds.php:1327
+#: index.php:231 classes/pref/feeds.php:759 classes/pref/feeds.php:1340
 #: js/PrefFeedTree.js:73
 msgid "Unsubscribe"
 msgstr "Avsluta prenumeration"
@@ -338,8 +314,7 @@ msgstr "Visa/dölj lästa flöden"
 msgid "Other actions:"
 msgstr "Andra aktiviteter:"
 
-#: index.php:236
-#: include/functions.php:1984
+#: index.php:236 include/functions.php:1983
 msgid "Toggle widescreen mode"
 msgstr "Växla widescreenläge"
 
@@ -359,54 +334,48 @@ msgstr "Skapa filter..."
 msgid "Keyboard shortcuts help"
 msgstr "Hjälp för kortkommandon..."
 
-#: index.php:249
+#: index.php:249 plugins/digest/digest_body.php:75
+#: plugins/mobile/mobile-functions.php:65
+#: plugins/mobile/mobile-functions.php:240
 msgid "Logout"
 msgstr "Logga ut"
 
-#: prefs.php:33
-#: prefs.php:115
-#: include/functions.php:2011
+#: prefs.php:33 prefs.php:116 include/functions.php:2010
 #: classes/pref/prefs.php:440
 msgid "Preferences"
 msgstr "Inställningar"
 
-#: prefs.php:106
+#: prefs.php:107
 msgid "Keyboard shortcuts"
 msgstr "Kortkommandon"
 
-#: prefs.php:107
+#: prefs.php:108
 msgid "Exit preferences"
 msgstr "Lämna inställningarna"
 
-#: prefs.php:118
-#: classes/pref/feeds.php:106
-#: classes/pref/feeds.php:1253
-#: classes/pref/feeds.php:1316
+#: prefs.php:119 classes/pref/feeds.php:107 classes/pref/feeds.php:1266
+#: classes/pref/feeds.php:1329
 msgid "Feeds"
 msgstr "Flöden"
 
-#: prefs.php:121
-#: classes/pref/filters.php:154
+#: prefs.php:122 classes/pref/filters.php:156
 msgid "Filters"
 msgstr "Filter"
 
-#: prefs.php:124
-#: include/functions.php:1176
-#: include/functions.php:1832
-#: classes/pref/labels.php:90
+#: prefs.php:125 include/functions.php:1176 include/functions.php:1831
+#: classes/pref/labels.php:90 plugins/mobile/mobile-functions.php:201
 msgid "Labels"
 msgstr "Etiketter"
 
-#: prefs.php:128
+#: prefs.php:129
 msgid "Users"
 msgstr "Användare"
 
-#: prefs.php:131
+#: prefs.php:132
 msgid "System"
 msgstr "System"
 
-#: register.php:184
-#: include/login_form.php:238
+#: register.php:184 include/login_form.php:238
 msgid "Create new account"
 msgstr "Skapa ett nytt konto"
 
@@ -414,27 +383,23 @@ msgstr "Skapa ett nytt konto"
 msgid "New user registrations are administratively disabled."
 msgstr "Nyregistrering av användare Ã¤r inaktiverat."
 
-#: register.php:194
-#: register.php:239
-#: register.php:252
-#: register.php:267
-#: register.php:286
-#: register.php:334
-#: register.php:344
-#: register.php:356
-#: classes/handler/public.php:632
-#: classes/handler/public.php:723
-#: classes/handler/public.php:805
-#: classes/handler/public.php:880
-#: classes/handler/public.php:894
-#: classes/handler/public.php:901
-#: classes/handler/public.php:926
+#: register.php:194 register.php:239 register.php:252 register.php:267
+#: register.php:286 register.php:334 register.php:344 register.php:356
+#: classes/handler/public.php:629 classes/handler/public.php:717
+#: classes/handler/public.php:799 classes/handler/public.php:874
+#: classes/handler/public.php:888 classes/handler/public.php:895
+#: classes/handler/public.php:920
 msgid "Return to Tiny Tiny RSS"
 msgstr "Ã…tergÃ¥ till Tiny Tiny RSS"
 
 #: register.php:215
-msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent."
-msgstr "Ditt tillfälliga lösenords skickas till angiven e-postadress. Om du inte loggar in inom 24 timmar kommer kontot automatiskt att raderas"
+msgid ""
+"Your temporary password will be sent to the specified email. Accounts, which "
+"were not logged in once, are erased automatically 24 hours after temporary "
+"password is sent."
+msgstr ""
+"Ditt tillfälliga lösenords skickas till angiven e-postadress. Om du inte "
+"loggar in inom 24 timmar kommer kontot automatiskt att raderas"
 
 #: register.php:221
 msgid "Desired login:"
@@ -444,13 +409,11 @@ msgstr "Önskat användarnamn:"
 msgid "Check availability"
 msgstr "Kontrollera tillgänglighet"
 
-#: register.php:226
-#: classes/handler/public.php:763
+#: register.php:226 classes/handler/public.php:757
 msgid "Email:"
 msgstr "E-post:"
 
-#: register.php:229
-#: classes/handler/public.php:768
+#: register.php:229 classes/handler/public.php:762
 msgid "How much is two plus two:"
 msgstr "Hur mycket Ã¤r tvÃ¥ plus tvÃ¥?:"
 
@@ -482,13 +445,9 @@ msgstr "Nyregistrering av användare Ã¤r för närvarande avstängt."
 msgid "Tiny Tiny RSS data update script."
 msgstr "Skript för att uppdatera Tiny Tiny RSS."
 
-#: include/digest.php:109
-#: include/functions.php:1185
-#: include/functions.php:1733
-#: include/functions.php:1818
-#: include/functions.php:1840
-#: classes/opml.php:416
-#: classes/pref/feeds.php:218
+#: include/digest.php:109 include/functions.php:1185
+#: include/functions.php:1732 include/functions.php:1817
+#: include/functions.php:1839 classes/opml.php:416 classes/pref/feeds.php:220
 msgid "Uncategorized"
 msgstr "Okategoriserat"
 
@@ -503,351 +462,315 @@ msgstr[1] "%d arkiverade artiklar"
 msgid "No feeds found."
 msgstr "Inga flöden funna."
 
-#: include/functions.php:1174
-#: include/functions.php:1830
+#: include/functions.php:1174 include/functions.php:1829
+#: plugins/mobile/mobile-functions.php:174
 msgid "Special"
 msgstr "Special"
 
-#: include/functions.php:1681
-#: classes/feeds.php:1097
-#: classes/pref/filters.php:425
+#: include/functions.php:1681 classes/feeds.php:1110
+#: classes/pref/filters.php:427
 msgid "All feeds"
 msgstr "Alla flöden"
 
-#: include/functions.php:1885
+#: include/functions.php:1884
 msgid "Starred articles"
 msgstr "Stjärnmärkta artiklar"
 
-#: include/functions.php:1887
+#: include/functions.php:1886
 msgid "Published articles"
 msgstr "Publicerade artiklar"
 
-#: include/functions.php:1889
+#: include/functions.php:1888
 msgid "Fresh articles"
 msgstr "Nya artiklar"
 
-#: include/functions.php:1891
-#: include/functions.php:2006
+#: include/functions.php:1890 include/functions.php:2005
 msgid "All articles"
 msgstr "Alla artiklar"
 
-#: include/functions.php:1893
+#: include/functions.php:1892
 msgid "Archived articles"
 msgstr "Arkiverade artiklar"
 
-#: include/functions.php:1895
+#: include/functions.php:1894
 msgid "Recently read"
 msgstr "Nyligen lästa"
 
-#: include/functions.php:1958
+#: include/functions.php:1957
 msgid "Navigation"
 msgstr "Navigation"
 
-#: include/functions.php:1959
+#: include/functions.php:1958
 msgid "Open next feed"
 msgstr "Öppna nästa flöde"
 
-#: include/functions.php:1960
+#: include/functions.php:1959
 msgid "Open previous feed"
 msgstr "Öppna föregÃ¥ende flöde"
 
-#: include/functions.php:1961
+#: include/functions.php:1960
 msgid "Open next article"
 msgstr "Öppna näst artikel"
 
-#: include/functions.php:1962
+#: include/functions.php:1961
 msgid "Open previous article"
 msgstr "Öppna föregÃ¥ende artikel"
 
-#: include/functions.php:1963
+#: include/functions.php:1962
 msgid "Open next article (don't scroll long articles)"
 msgstr "Öppna nästa artikel (skrolla inte lÃ¥nga artiklar)"
 
-#: include/functions.php:1964
+#: include/functions.php:1963
 msgid "Open previous article (don't scroll long articles)"
 msgstr "Öppna föregÃ¥ende artikel (skrolla inte lÃ¥nga artiklar)"
 
-#: include/functions.php:1965
-#, fuzzy
+#: include/functions.php:1964
 msgid "Move to next article (don't expand or mark read)"
-msgstr "Öppna nästa artikel (skrolla inte lÃ¥nga artiklar)"
+msgstr "GÃ¥ till nästa artikel (expandera inte eller markera som läst)"
 
-#: include/functions.php:1966
-#, fuzzy
+#: include/functions.php:1965
 msgid "Move to previous article (don't expand or mark read)"
-msgstr "Öppna föregÃ¥ende artikel (skrolla inte lÃ¥nga artiklar)"
+msgstr "GÃ¥ till föregÃ¥ende artikel (expandera inte eller markera som läst)"
 
-#: include/functions.php:1967
+#: include/functions.php:1966
 msgid "Show search dialog"
 msgstr "Visa sökdialogen"
 
-#: include/functions.php:1968
+#: include/functions.php:1967
 msgid "Article"
 msgstr "Artikel"
 
-#: include/functions.php:1969
+#: include/functions.php:1968
 msgid "Toggle starred"
 msgstr "Växla stjärnmarkering"
 
-#: include/functions.php:1970
-#: js/viewfeed.js:1911
+#: include/functions.php:1969 js/viewfeed.js:1931
 msgid "Toggle published"
 msgstr "Växla publicering"
 
-#: include/functions.php:1971
-#: js/viewfeed.js:1889
+#: include/functions.php:1970 js/viewfeed.js:1909
 msgid "Toggle unread"
 msgstr "Växla olästa"
 
-#: include/functions.php:1972
+#: include/functions.php:1971
 msgid "Edit tags"
 msgstr "Redigera taggar"
 
-#: include/functions.php:1973
+#: include/functions.php:1972
 msgid "Dismiss selected"
 msgstr "Avvisa markerade"
 
-#: include/functions.php:1974
+#: include/functions.php:1973
 msgid "Dismiss read"
 msgstr "Avvisa lästa"
 
-#: include/functions.php:1975
+#: include/functions.php:1974
 msgid "Open in new window"
 msgstr "Öppna i nytt fönster"
 
-#: include/functions.php:1976
-#: js/viewfeed.js:1930
+#: include/functions.php:1975 js/viewfeed.js:1950
 msgid "Mark below as read"
 msgstr "Märk nedanstÃ¥ende som lästa"
 
-#: include/functions.php:1977
-#: js/viewfeed.js:1924
+#: include/functions.php:1976 js/viewfeed.js:1944
 msgid "Mark above as read"
 msgstr "Märk ovanstÃ¥ende som lästa"
 
-#: include/functions.php:1978
+#: include/functions.php:1977
 msgid "Scroll down"
 msgstr "Skrolla ned"
 
-#: include/functions.php:1979
+#: include/functions.php:1978
 msgid "Scroll up"
 msgstr "Skrolla upp"
 
-#: include/functions.php:1980
+#: include/functions.php:1979
 msgid "Select article under cursor"
 msgstr "Välj artikel under pekare"
 
-#: include/functions.php:1981
+#: include/functions.php:1980
 msgid "Email article"
 msgstr "Skicka artikel med e-post"
 
-#: include/functions.php:1982
+#: include/functions.php:1981
 msgid "Close/collapse article"
 msgstr "Stäng/minimera artikel"
 
-#: include/functions.php:1983
-#, fuzzy
+#: include/functions.php:1982
 msgid "Toggle article expansion (combined mode)"
-msgstr "Expandera artiklar automatiskt i kombinerat läge"
+msgstr "Växla expanderat artikelläge (kombinerat läge)"
 
-#: include/functions.php:1985
-#: plugins/embed_original/init.php:31
+#: include/functions.php:1984 plugins/embed_original/init.php:31
 msgid "Toggle embed original"
 msgstr "Stäng av/sätt pÃ¥ inbäddade original"
 
-#: include/functions.php:1986
+#: include/functions.php:1985
 msgid "Article selection"
 msgstr "Artikelval"
 
-#: include/functions.php:1987
+#: include/functions.php:1986
 msgid "Select all articles"
 msgstr "Välj alla artiklar"
 
-#: include/functions.php:1988
+#: include/functions.php:1987
 msgid "Select unread"
 msgstr "Välj olästa"
 
-#: include/functions.php:1989
+#: include/functions.php:1988
 msgid "Select starred"
 msgstr "Välj markerade"
 
-#: include/functions.php:1990
+#: include/functions.php:1989
 msgid "Select published"
 msgstr "Välj publicerade"
 
-#: include/functions.php:1991
+#: include/functions.php:1990
 msgid "Invert selection"
 msgstr "Invertera val"
 
-#: include/functions.php:1992
+#: include/functions.php:1991
 msgid "Deselect everything"
 msgstr "Avmarkera allt"
 
-#: include/functions.php:1993
-#: classes/pref/feeds.php:540
-#: classes/pref/feeds.php:783
+#: include/functions.php:1992 classes/pref/feeds.php:553
+#: classes/pref/feeds.php:796
 msgid "Feed"
 msgstr "Flöde"
 
-#: include/functions.php:1994
+#: include/functions.php:1993
 msgid "Refresh current feed"
 msgstr "Uppdatera aktuellt flöde"
 
-#: include/functions.php:1995
+#: include/functions.php:1994
 msgid "Un/hide read feeds"
 msgstr "Visa/dölj lästa flöden"
 
-#: include/functions.php:1996
-#: classes/pref/feeds.php:1319
+#: include/functions.php:1995 classes/pref/feeds.php:1332
 msgid "Subscribe to feed"
 msgstr "Prenumerera pÃ¥ flöde"
 
-#: include/functions.php:1997
-#: js/FeedTree.js:135
-#: js/PrefFeedTree.js:67
+#: include/functions.php:1996 js/FeedTree.js:135 js/PrefFeedTree.js:67
 msgid "Edit feed"
 msgstr "Redigera flöde"
 
-#: include/functions.php:1999
+#: include/functions.php:1998
 msgid "Reverse headlines"
 msgstr "Omvänd sortering pÃ¥ rubrik"
 
-#: include/functions.php:2000
+#: include/functions.php:1999
 msgid "Debug feed update"
 msgstr "Felsök flödesuppdatering"
 
-#: include/functions.php:2001
-#: js/FeedTree.js:178
+#: include/functions.php:2000 js/FeedTree.js:178
 msgid "Mark all feeds as read"
 msgstr "Märk alla flöden som lästa"
 
-#: include/functions.php:2002
+#: include/functions.php:2001
 msgid "Un/collapse current category"
 msgstr "Öppna/stäng aktuell kategori:"
 
-#: include/functions.php:2003
+#: include/functions.php:2002
 msgid "Toggle combined mode"
 msgstr "Växla komboläge"
 
-#: include/functions.php:2004
+#: include/functions.php:2003
 msgid "Toggle auto expand in combined mode"
 msgstr "Aktivera automatisk expandering i kombinerat läge"
 
-#: include/functions.php:2005
+#: include/functions.php:2004
 msgid "Go to"
 msgstr "GÃ¥ till"
 
-#: include/functions.php:2007
+#: include/functions.php:2006
 msgid "Fresh"
 msgstr "Nya"
 
-#: include/functions.php:2010
-#: js/tt-rss.js:457
-#: js/tt-rss.js:642
+#: include/functions.php:2009 js/tt-rss.js:456 js/tt-rss.js:615
 msgid "Tag cloud"
 msgstr "Taggmoln"
 
-#: include/functions.php:2012
+#: include/functions.php:2011
 msgid "Other"
 msgstr "Övriga"
 
-#: include/functions.php:2013
-#: classes/pref/labels.php:281
+#: include/functions.php:2012 classes/pref/labels.php:281
 msgid "Create label"
 msgstr "Skapa etikett"
 
-#: include/functions.php:2014
-#: classes/pref/filters.php:652
+#: include/functions.php:2013 classes/pref/filters.php:654
 msgid "Create filter"
 msgstr "Skapa filter"
 
-#: include/functions.php:2015
+#: include/functions.php:2014
 msgid "Un/collapse sidebar"
 msgstr "Visa/dölj sidofält"
 
-#: include/functions.php:2016
+#: include/functions.php:2015
 msgid "Show help dialog"
 msgstr "Visa hjälpfönster"
 
-#: include/functions.php:2537
+#: include/functions.php:2536
 #, php-format
 msgid "Search results: %s"
 msgstr "Sökresultat: %s"
 
-#: include/functions.php:3132
+#: include/functions.php:3133
 msgid " - "
 msgstr " - "
 
-#: include/functions.php:3154
-#: include/functions.php:3395
+#: include/functions.php:3155 include/functions.php:3431
 #: classes/article.php:281
 msgid "no tags"
 msgstr "Inga taggar"
 
-#: include/functions.php:3164
-#: classes/feeds.php:676
+#: include/functions.php:3165 classes/feeds.php:689
 msgid "Edit tags for this article"
 msgstr "Redigera taggar för denna artikel"
 
-#: include/functions.php:3196
-#: classes/feeds.php:628
+#: include/functions.php:3197 classes/feeds.php:641
 msgid "Originally from:"
 msgstr "Ursprungligen frÃ¥n:"
 
-#: include/functions.php:3209
-#: classes/feeds.php:641
-#: classes/pref/feeds.php:559
+#: include/functions.php:3210 classes/feeds.php:654 classes/pref/feeds.php:572
 msgid "Feed URL"
 msgstr "URL för flöde"
 
-#: include/functions.php:3241
-#: classes/dlg.php:37
-#: classes/dlg.php:60
-#: classes/dlg.php:93
-#: classes/dlg.php:159
-#: classes/dlg.php:190
-#: classes/dlg.php:217
-#: classes/dlg.php:250
-#: classes/dlg.php:262
-#: classes/backend.php:105
-#: classes/pref/users.php:95
-#: classes/pref/filters.php:145
-#: classes/pref/prefs.php:1096
-#: classes/pref/feeds.php:1626
-#: classes/pref/feeds.php:1694
-#: plugins/import_export/init.php:407
-#: plugins/import_export/init.php:452
-#: plugins/googlereaderimport/init.php:193
-#: plugins/share/init.php:65
+#: include/functions.php:3242 classes/dlg.php:37 classes/dlg.php:60
+#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190
+#: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262
+#: classes/backend.php:105 classes/pref/users.php:99
+#: classes/pref/filters.php:147 classes/pref/prefs.php:1100
+#: classes/pref/feeds.php:1641 classes/pref/feeds.php:1713
+#: plugins/import_export/init.php:405 plugins/import_export/init.php:450
+#: plugins/googlereaderimport/init.php:193 plugins/share/init.php:65
 #: plugins/updater/init.php:368
 msgid "Close this window"
 msgstr "Stäng fönstret"
 
-#: include/functions.php:3432
+#: include/functions.php:3458
 msgid "(edit note)"
 msgstr "(Redigera notering)"
 
-#: include/functions.php:3667
+#: include/functions.php:3693
 msgid "unknown type"
 msgstr "Okänd typ"
 
-#: include/functions.php:3723
+#: include/functions.php:3749
 msgid "Attachments"
 msgstr "Bilagor"
 
-#: include/functions.php:4222
+#: include/functions.php:4248
 #, php-format
 msgid "LibXML error %s at line %d (column %d): %s"
 msgstr "LibXML-fel %s pÃ¥ rad %d (kolumn %d): %s"
 
-#: include/login_form.php:183
-#: classes/handler/public.php:475
-#: classes/handler/public.php:758
+#: include/login_form.php:183 classes/handler/public.php:475
+#: classes/handler/public.php:752 plugins/mobile/login_form.php:40
 msgid "Login:"
 msgstr "Användarnamn:"
 
-#: include/login_form.php:194
-#: classes/handler/public.php:478
+#: include/login_form.php:194 classes/handler/public.php:478
+#: plugins/mobile/login_form.php:45
 msgid "Password:"
 msgstr "Lösenord:"
 
@@ -859,10 +782,8 @@ msgstr "Jag har glömt mitt lösenord"
 msgid "Profile:"
 msgstr "Profil:"
 
-#: include/login_form.php:209
-#: classes/handler/public.php:233
-#: classes/rpc.php:63
-#: classes/pref/prefs.php:1034
+#: include/login_form.php:209 classes/handler/public.php:233
+#: classes/rpc.php:63 classes/pref/prefs.php:1036
 msgid "Default profile"
 msgstr "Standardprofil"
 
@@ -878,8 +799,8 @@ msgstr "Visar inte bilder i artiklar, reducerar automatiska omladdningar."
 msgid "Remember me"
 msgstr "Kom ihÃ¥g mig"
 
-#: include/login_form.php:235
-#: classes/handler/public.php:483
+#: include/login_form.php:235 classes/handler/public.php:483
+#: plugins/mobile/login_form.php:28
 msgid "Log in"
 msgstr "Logga in"
 
@@ -895,44 +816,28 @@ msgstr "Hittar inte artikel."
 msgid "Tags for this article (separated by commas):"
 msgstr "Taggar för denna artikel (kommaseparerade):"
 
-#: classes/article.php:204
-#: classes/pref/users.php:172
-#: classes/pref/labels.php:79
-#: classes/pref/filters.php:403
-#: classes/pref/prefs.php:980
-#: classes/pref/feeds.php:762
-#: classes/pref/feeds.php:910
-#: plugins/nsfw/init.php:83
-#: plugins/note/init.php:51
-#: plugins/instances/init.php:245
+#: classes/article.php:204 classes/pref/users.php:176
+#: classes/pref/labels.php:79 classes/pref/filters.php:405
+#: classes/pref/prefs.php:982 classes/pref/feeds.php:775
+#: classes/pref/feeds.php:923 plugins/nsfw/init.php:83
+#: plugins/note/init.php:51 plugins/instances/init.php:245
 msgid "Save"
 msgstr "Spara"
 
-#: classes/article.php:206
-#: classes/handler/public.php:452
-#: classes/handler/public.php:486
-#: classes/feeds.php:1024
-#: classes/feeds.php:1076
-#: classes/feeds.php:1136
-#: classes/pref/users.php:174
-#: classes/pref/labels.php:81
-#: classes/pref/filters.php:406
-#: classes/pref/filters.php:801
-#: classes/pref/filters.php:877
-#: classes/pref/filters.php:944
-#: classes/pref/prefs.php:982
-#: classes/pref/feeds.php:763
-#: classes/pref/feeds.php:913
-#: classes/pref/feeds.php:1834
-#: plugins/mail/init.php:124
-#: plugins/note/init.php:53
-#: plugins/instances/init.php:248
+#: classes/article.php:206 classes/handler/public.php:452
+#: classes/handler/public.php:486 classes/feeds.php:1037
+#: classes/feeds.php:1089 classes/feeds.php:1149 classes/pref/users.php:178
+#: classes/pref/labels.php:81 classes/pref/filters.php:408
+#: classes/pref/filters.php:803 classes/pref/filters.php:879
+#: classes/pref/filters.php:946 classes/pref/prefs.php:984
+#: classes/pref/feeds.php:776 classes/pref/feeds.php:926
+#: classes/pref/feeds.php:1853 plugins/mail/init.php:124
+#: plugins/note/init.php:53 plugins/instances/init.php:248
 #: plugins/instances/init.php:436
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: classes/handler/public.php:416
-#: plugins/bookmarklets/init.php:40
+#: classes/handler/public.php:416 plugins/bookmarklets/init.php:36
 msgid "Share with Tiny Tiny RSS"
 msgstr "Dela med Tiny Tiny RSS"
 
@@ -940,10 +845,8 @@ msgstr "Dela med Tiny Tiny RSS"
 msgid "Title:"
 msgstr "Titel:"
 
-#: classes/handler/public.php:426
-#: classes/pref/feeds.php:557
-#: classes/pref/feeds.php:798
-#: plugins/instances/init.php:212
+#: classes/handler/public.php:426 classes/pref/feeds.php:570
+#: classes/pref/feeds.php:811 plugins/instances/init.php:212
 #: plugins/instances/init.php:401
 msgid "URL:"
 msgstr "URL:"
@@ -968,118 +871,129 @@ msgstr "Dela"
 msgid "Not logged in"
 msgstr "Inte inloggad"
 
-#: classes/handler/public.php:532
+#: classes/handler/public.php:529
 msgid "Incorrect username or password"
 msgstr "Felaktigt användarnamn eller lösenord"
 
-#: classes/handler/public.php:568
-#: classes/handler/public.php:666
+#: classes/handler/public.php:565 classes/handler/public.php:662
 #, php-format
 msgid "Already subscribed to <b>%s</b>."
 msgstr "Du prenumererar redan pÃ¥ <b>%s</b>."
 
-#: classes/handler/public.php:571
-#: classes/handler/public.php:657
+#: classes/handler/public.php:568 classes/handler/public.php:653
 #, php-format
 msgid "Subscribed to <b>%s</b>."
 msgstr "Prenumererar pÃ¥ <b>%s</b>."
 
-#: classes/handler/public.php:574
-#: classes/handler/public.php:660
+#: classes/handler/public.php:571 classes/handler/public.php:656
 #, php-format
 msgid "Could not subscribe to <b>%s</b>."
 msgstr "Kunde inte prenumerera pÃ¥  <b>%s</b>."
 
-#: classes/handler/public.php:577
-#: classes/handler/public.php:663
+#: classes/handler/public.php:574 classes/handler/public.php:659
 #, php-format
 msgid "No feeds found in <b>%s</b>."
 msgstr "Hittade inga flöden i <b>%s</b>."
 
-#: classes/handler/public.php:580
-#: classes/handler/public.php:669
+#: classes/handler/public.php:577 classes/handler/public.php:665
 msgid "Multiple feed URLs found."
 msgstr "Hittade flera flödes-URLer."
 
-#: classes/handler/public.php:584
-#: classes/handler/public.php:676
+#: classes/handler/public.php:581 classes/handler/public.php:670
 #, php-format
 msgid "Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL."
 msgstr "Kunde inte prenumerera pÃ¥ <b>%s</b> <br>Kan inte ladda ned URL "
 
-#: classes/handler/public.php:602
-#: classes/handler/public.php:694
+#: classes/handler/public.php:599 classes/handler/public.php:688
 msgid "Subscribe to selected feed"
 msgstr "Prenumerera pÃ¥ valt flöde"
 
-#: classes/handler/public.php:627
-#: classes/handler/public.php:718
+#: classes/handler/public.php:624 classes/handler/public.php:712
 msgid "Edit subscription options"
 msgstr "Redigera prenumerationsinställningar"
 
-#: classes/handler/public.php:745
+#: classes/handler/public.php:739
 msgid "Password recovery"
 msgstr "Ã…terställning av lösenord"
 
-#: classes/handler/public.php:751
-msgid "You will need to provide valid account name and email. New password will be sent on your email address."
-msgstr "Du mÃ¥ste uppge ett giltigt kontonamn och e-postadress. Ett ny lösenord kommer att skickas till din e-post."
+#: classes/handler/public.php:745
+msgid ""
+"You will need to provide valid account name and email. New password will be "
+"sent on your email address."
+msgstr ""
+"Du mÃ¥ste uppge ett giltigt kontonamn och e-postadress. Ett ny lösenord "
+"kommer att skickas till din e-post."
 
-#: classes/handler/public.php:773
-#: classes/pref/users.php:356
+#: classes/handler/public.php:767 classes/pref/users.php:360
 msgid "Reset password"
 msgstr "Ã…terställ lösenord"
 
-#: classes/handler/public.php:783
+#: classes/handler/public.php:777
 msgid "Some of the required form parameters are missing or incorrect."
-msgstr "Vissa av dom obligatoriska formulärparametrarna saknas eller Ã¤r inkorrekta."
+msgstr ""
+"Vissa av dom obligatoriska formulärparametrarna saknas eller Ã¤r inkorrekta."
 
-#: classes/handler/public.php:787
-#: classes/handler/public.php:813
+#: classes/handler/public.php:781 classes/handler/public.php:807
+#: plugins/digest/digest_body.php:67
 msgid "Go back"
 msgstr "GÃ¥ tillbaka"
 
-#: classes/handler/public.php:809
+#: classes/handler/public.php:803
 msgid "Sorry, login and email combination not found."
-msgstr "Beklagar, kombinationen av användarnamn och e-postadress kunde inte hittas."
+msgstr ""
+"Beklagar, kombinationen av användarnamn och e-postadress kunde inte hittas."
 
-#: classes/handler/public.php:829
+#: classes/handler/public.php:823
 msgid "Your access level is insufficient to run this script."
 msgstr "Du har inte behörighet att köra detta skript."
 
-#: classes/handler/public.php:853
+#: classes/handler/public.php:847
 msgid "Database Updater"
 msgstr "Databasuppdatering"
 
-#: classes/handler/public.php:918
+#: classes/handler/public.php:912
 msgid "Perform updates"
 msgstr "Utför uppdatering"
 
 #: classes/dlg.php:16
-msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data."
-msgstr "Om du har importerat etiketter eller filter mÃ¥ste du ladda om inställningarna för att se uppdateringarna"
+msgid ""
+"If you have imported labels and/or filters, you might need to reload "
+"preferences to see your new data."
+msgstr ""
+"Om du har importerat etiketter eller filter mÃ¥ste du ladda om "
+"inställningarna för att se uppdateringarna"
 
 #: classes/dlg.php:48
 msgid "Your Public OPML URL is:"
 msgstr "Din publika OPML-URL Ã¤r:"
 
-#: classes/dlg.php:57
-#: classes/dlg.php:214
+#: classes/dlg.php:57 classes/dlg.php:214
 msgid "Generate new URL"
 msgstr "Skapa ny URL"
 
 #: classes/dlg.php:71
-msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner."
-msgstr "Uppdateringsdemon Ã¤r aktiverad i konfigurationen, men processen körs inte. Detta förhindrar alla flöden frÃ¥n att uppdateras. Starta om processen eller kontakta den som administrerar instansen."
+msgid ""
+"Update daemon is enabled in configuration, but daemon process is not "
+"running, which prevents all feeds from updating. Please start the daemon "
+"process or contact instance owner."
+msgstr ""
+"Uppdateringsdemon Ã¤r aktiverad i konfigurationen, men processen körs inte. "
+"Detta förhindrar alla flöden frÃ¥n att uppdateras. Starta om processen eller "
+"kontakta den som administrerar instansen."
 
-#: classes/dlg.php:75
-#: classes/dlg.php:84
+#: classes/dlg.php:75 classes/dlg.php:84
 msgid "Last update:"
 msgstr "Senaste uppdatering:"
 
 #: classes/dlg.php:80
-msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner."
-msgstr "Uppdateringsprocessen tar för lÃ¥ng tid pÃ¥ sig att uppdatera. Detta kan indikera en lÃ¥sning eller hängning. Kontrollera processen eller kontakta administratören."
+msgid ""
+"Update daemon is taking too long to perform a feed update. This could "
+"indicate a problem like crash or a hang. Please check the daemon process or "
+"contact instance owner."
+msgstr ""
+"Uppdateringsprocessen tar för lÃ¥ng tid pÃ¥ sig att uppdatera. Detta kan "
+"indikera en lÃ¥sning eller hängning. Kontrollera processen eller kontakta "
+"administratören."
 
 #: classes/dlg.php:166
 msgid "Match:"
@@ -1105,18 +1019,20 @@ msgstr "Visa poster"
 msgid "You can view this feed as RSS using the following URL:"
 msgstr "Du kan se detta flöde som RSS pÃ¥ följande URL:"
 
-#: classes/dlg.php:233
-#: plugins/updater/init.php:331
+#: classes/dlg.php:233 plugins/updater/init.php:331
 #, php-format
 msgid "New version of Tiny Tiny RSS is available (%s)."
 msgstr "Ny version av Tiny Tiny RSS tillgänglig(%s)."
 
 #: classes/dlg.php:241
-msgid "You can update using built-in updater in the Preferences or by using update.php"
-msgstr "Du kan uppdatera med din inbyggda uppdateraren under Inställningar eller med update.php"
+msgid ""
+"You can update using built-in updater in the Preferences or by using update."
+"php"
+msgstr ""
+"Du kan uppdatera med din inbyggda uppdateraren under Inställningar eller med "
+"update.php"
 
-#: classes/dlg.php:245
-#: plugins/updater/init.php:335
+#: classes/dlg.php:245 plugins/updater/init.php:335
 msgid "See the release notes"
 msgstr "Se releasenoteringar"
 
@@ -1137,9 +1053,7 @@ msgstr "Senast uppdaterat: %s"
 msgid "View as RSS feed"
 msgstr "Visa RSS-flöde"
 
-#: classes/feeds.php:76
-#: classes/feeds.php:128
-#: classes/pref/feeds.php:1478
+#: classes/feeds.php:76 classes/feeds.php:128 classes/pref/feeds.php:1496
 msgid "View as RSS"
 msgstr "Visa som RSS"
 
@@ -1147,19 +1061,12 @@ msgstr "Visa som RSS"
 msgid "Select:"
 msgstr "Markera:"
 
-#: classes/feeds.php:84
-#: classes/pref/users.php:341
-#: classes/pref/labels.php:275
-#: classes/pref/filters.php:280
-#: classes/pref/filters.php:328
-#: classes/pref/filters.php:646
-#: classes/pref/filters.php:734
-#: classes/pref/filters.php:761
-#: classes/pref/prefs.php:994
-#: classes/pref/feeds.php:1310
-#: classes/pref/feeds.php:1575
-#: classes/pref/feeds.php:1641
-#: plugins/instances/init.php:287
+#: classes/feeds.php:84 classes/pref/users.php:345 classes/pref/labels.php:275
+#: classes/pref/filters.php:282 classes/pref/filters.php:330
+#: classes/pref/filters.php:648 classes/pref/filters.php:736
+#: classes/pref/filters.php:763 classes/pref/prefs.php:996
+#: classes/pref/feeds.php:1323 classes/pref/feeds.php:1589
+#: classes/pref/feeds.php:1659 plugins/instances/init.php:287
 msgid "All"
 msgstr "Alla"
 
@@ -1167,19 +1074,12 @@ msgstr "Alla"
 msgid "Invert"
 msgstr "Invertera"
 
-#: classes/feeds.php:87
-#: classes/pref/users.php:343
-#: classes/pref/labels.php:277
-#: classes/pref/filters.php:282
-#: classes/pref/filters.php:330
-#: classes/pref/filters.php:648
-#: classes/pref/filters.php:736
-#: classes/pref/filters.php:763
-#: classes/pref/prefs.php:996
-#: classes/pref/feeds.php:1312
-#: classes/pref/feeds.php:1577
-#: classes/pref/feeds.php:1643
-#: plugins/instances/init.php:289
+#: classes/feeds.php:87 classes/pref/users.php:347 classes/pref/labels.php:277
+#: classes/pref/filters.php:284 classes/pref/filters.php:332
+#: classes/pref/filters.php:650 classes/pref/filters.php:738
+#: classes/pref/filters.php:765 classes/pref/prefs.php:998
+#: classes/pref/feeds.php:1325 classes/pref/feeds.php:1591
+#: classes/pref/feeds.php:1661 plugins/instances/init.php:289
 msgid "None"
 msgstr "Ingen"
 
@@ -1207,17 +1107,13 @@ msgstr "Arkiv"
 msgid "Move back"
 msgstr "GÃ¥ tillbaka"
 
-#: classes/feeds.php:110
-#: classes/pref/filters.php:289
-#: classes/pref/filters.php:337
-#: classes/pref/filters.php:743
-#: classes/pref/filters.php:770
+#: classes/feeds.php:110 classes/pref/filters.php:291
+#: classes/pref/filters.php:339 classes/pref/filters.php:745
+#: classes/pref/filters.php:772
 msgid "Delete"
 msgstr "Radera"
 
-#: classes/feeds.php:115
-#: classes/feeds.php:120
-#: plugins/mailto/init.php:25
+#: classes/feeds.php:115 classes/feeds.php:120 plugins/mailto/init.php:25
 #: plugins/mail/init.php:26
 msgid "Forward by email"
 msgstr "Skicka med e-post"
@@ -1226,8 +1122,7 @@ msgstr "Skicka med e-post"
 msgid "Feed:"
 msgstr "Flöde:"
 
-#: classes/feeds.php:197
-#: classes/feeds.php:824
+#: classes/feeds.php:197 classes/feeds.php:837
 msgid "Feed not found."
 msgstr "Kunde inte hitta flöde."
 
@@ -1240,142 +1135,128 @@ msgstr "Aldrig"
 msgid "Imported at %s"
 msgstr "Importerad kl. %s"
 
-#: classes/feeds.php:520
+#: classes/feeds.php:535
 msgid "mark as read"
 msgstr "markera som läst"
 
-#: classes/feeds.php:570
+#: classes/feeds.php:585
 msgid "Collapse article"
 msgstr "Minimera artikel"
 
-#: classes/feeds.php:725
+#: classes/feeds.php:738
 msgid "No unread articles found to display."
 msgstr "Hittade inga olästa artiklar."
 
-#: classes/feeds.php:728
+#: classes/feeds.php:741
 msgid "No updated articles found to display."
 msgstr "Hittade inga uppdaterade artiklar."
 
-#: classes/feeds.php:731
+#: classes/feeds.php:744
 msgid "No starred articles found to display."
 msgstr "Hittade inga stjärnmarkerade artiklar."
 
-#: classes/feeds.php:735
-msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter."
-msgstr "Hittade inga artiklar att visa. Du kan ge artiklar etiketter manuellt  via snabbmenyn för artiklar (gäller alla valda artiklar) eller genom att använda filter."
+#: classes/feeds.php:748
+msgid ""
+"No articles found to display. You can assign articles to labels manually "
+"from article header context menu (applies to all selected articles) or use a "
+"filter."
+msgstr ""
+"Hittade inga artiklar att visa. Du kan ge artiklar etiketter manuellt  via "
+"snabbmenyn för artiklar (gäller alla valda artiklar) eller genom att använda "
+"filter."
 
-#: classes/feeds.php:737
+#: classes/feeds.php:750
 msgid "No articles found to display."
 msgstr "Hittade inga artiklar att visa."
 
-#: classes/feeds.php:752
-#: classes/feeds.php:919
+#: classes/feeds.php:765 classes/feeds.php:932
 #, php-format
 msgid "Feeds last updated at %s"
 msgstr "Flöden senast uppdaterade %s"
 
-#: classes/feeds.php:762
-#: classes/feeds.php:929
+#: classes/feeds.php:775 classes/feeds.php:942
 msgid "Some feeds have update errors (click for details)"
 msgstr "Vissa flöden har uppdateringsfel (klicka för detaljer)"
 
-#: classes/feeds.php:909
+#: classes/feeds.php:922
 msgid "No feed selected."
 msgstr "Inget flöde valt."
 
-#: classes/feeds.php:962
-#: classes/feeds.php:970
+#: classes/feeds.php:975 classes/feeds.php:983
 msgid "Feed or site URL"
 msgstr "URL för flöde eller webbplats"
 
-#: classes/feeds.php:976
-#: classes/pref/feeds.php:579
-#: classes/pref/feeds.php:811
-#: classes/pref/feeds.php:1798
+#: classes/feeds.php:989 classes/pref/feeds.php:592 classes/pref/feeds.php:824
+#: classes/pref/feeds.php:1817
 msgid "Place in category:"
 msgstr "Placera i kategori:"
 
-#: classes/feeds.php:984
+#: classes/feeds.php:997
 msgid "Available feeds"
 msgstr "Tillgängliga flöden"
 
-#: classes/feeds.php:996
-#: classes/pref/users.php:135
-#: classes/pref/feeds.php:609
-#: classes/pref/feeds.php:847
+#: classes/feeds.php:1009 classes/pref/users.php:139
+#: classes/pref/feeds.php:622 classes/pref/feeds.php:860
 msgid "Authentication"
 msgstr "Autentisering"
 
-#: classes/feeds.php:1000
-#: classes/pref/users.php:398
-#: classes/pref/feeds.php:615
-#: classes/pref/feeds.php:851
-#: classes/pref/feeds.php:1812
+#: classes/feeds.php:1013 classes/pref/users.php:402
+#: classes/pref/feeds.php:628 classes/pref/feeds.php:864
+#: classes/pref/feeds.php:1831
 msgid "Login"
 msgstr "Användarnamn"
 
-#: classes/feeds.php:1003
-#: classes/pref/prefs.php:260
-#: classes/pref/feeds.php:628
-#: classes/pref/feeds.php:857
-#: classes/pref/feeds.php:1815
+#: classes/feeds.php:1016 classes/pref/prefs.php:260
+#: classes/pref/feeds.php:641 classes/pref/feeds.php:870
+#: classes/pref/feeds.php:1834
 msgid "Password"
 msgstr "Lösenord"
 
-#: classes/feeds.php:1013
+#: classes/feeds.php:1026
 msgid "This feed requires authentication."
 msgstr "Detta flöde kräver autentisering."
 
-#: classes/feeds.php:1018
-#: classes/feeds.php:1074
-#: classes/pref/feeds.php:1833
+#: classes/feeds.php:1031 classes/feeds.php:1087 classes/pref/feeds.php:1852
 msgid "Subscribe"
 msgstr "Prenumerera"
 
-#: classes/feeds.php:1021
+#: classes/feeds.php:1034
 msgid "More feeds"
 msgstr "Fler flöden"
 
-#: classes/feeds.php:1044
-#: classes/feeds.php:1135
-#: classes/pref/users.php:328
-#: classes/pref/filters.php:639
-#: classes/pref/feeds.php:1303
-#: js/tt-rss.js:174
+#: classes/feeds.php:1057 classes/feeds.php:1148 classes/pref/users.php:332
+#: classes/pref/filters.php:641 classes/pref/feeds.php:1316 js/tt-rss.js:173
 msgid "Search"
 msgstr "Sök"
 
-#: classes/feeds.php:1048
+#: classes/feeds.php:1061
 msgid "Popular feeds"
 msgstr "Populära flöden"
 
-#: classes/feeds.php:1049
+#: classes/feeds.php:1062
 msgid "Feed archive"
 msgstr "Flödesarkiv"
 
-#: classes/feeds.php:1052
+#: classes/feeds.php:1065
 msgid "limit:"
 msgstr "gräns:"
 
-#: classes/feeds.php:1075
-#: classes/pref/users.php:354
-#: classes/pref/labels.php:284
-#: classes/pref/filters.php:396
-#: classes/pref/filters.php:665
-#: classes/pref/feeds.php:733
+#: classes/feeds.php:1088 classes/pref/users.php:358
+#: classes/pref/labels.php:284 classes/pref/filters.php:398
+#: classes/pref/filters.php:667 classes/pref/feeds.php:746
 #: plugins/instances/init.php:294
 msgid "Remove"
 msgstr "Ta bort"
 
-#: classes/feeds.php:1086
+#: classes/feeds.php:1099
 msgid "Look for"
 msgstr "Sök efter"
 
-#: classes/feeds.php:1094
+#: classes/feeds.php:1107
 msgid "Limit search to:"
 msgstr "Begränsa sökning till:"
 
-#: classes/feeds.php:1110
+#: classes/feeds.php:1123
 msgid "This feed"
 msgstr "Detta flöde"
 
@@ -1399,8 +1280,7 @@ msgstr "Ctrl"
 msgid "Help topic not found."
 msgstr "Hittade inte nÃ¥got hjälpavsnitt."
 
-#: classes/opml.php:28
-#: classes/opml.php:33
+#: classes/opml.php:28 classes/opml.php:33
 msgid "OPML Utility"
 msgstr "OPML-verktyg"
 
@@ -1446,38 +1326,31 @@ msgstr "Lägger till filter..."
 msgid "Processing category: %s"
 msgstr "Bearbetar kategori: %s"
 
-#: classes/opml.php:465
-#: plugins/import_export/init.php:420
+#: classes/opml.php:465 plugins/import_export/init.php:418
 #: plugins/googlereaderimport/init.php:66
 #, php-format
 msgid "Upload failed with error code %d"
 msgstr "Uppladdningen misslyckades med felkod %d"
 
-#: classes/opml.php:479
-#: plugins/import_export/init.php:434
+#: classes/opml.php:479 plugins/import_export/init.php:432
 #: plugins/googlereaderimport/init.php:80
-#, fuzzy
 msgid "Unable to move uploaded file."
-msgstr "Fel: kunde inte ladda artikel."
+msgstr "Fel: kunde inte flytta uppladdad fil."
 
-#: classes/opml.php:483
-#: plugins/import_export/init.php:438
+#: classes/opml.php:483 plugins/import_export/init.php:436
 #: plugins/googlereaderimport/init.php:84
 msgid "Error: please upload OPML file."
 msgstr "Fel: vänligen ladda upp en OPMLfil."
 
 #: classes/opml.php:492
-#, fuzzy
 msgid "Error: unable to find moved OPML file."
-msgstr "Fel: kunde inte ladda artikel."
+msgstr "Fel: kunde inte hitta flyttad OPML-fil."
 
-#: classes/opml.php:499
-#: plugins/googlereaderimport/init.php:186
+#: classes/opml.php:499 plugins/googlereaderimport/init.php:186
 msgid "Error while parsing document."
 msgstr "Fel vid tolkning av dokument."
 
-#: classes/pref/users.php:6
-#: classes/pref/system.php:8
+#: classes/pref/users.php:6 classes/pref/system.php:8
 #: plugins/instances/init.php:154
 msgid "Your access level is insufficient to open this tab."
 msgstr "Du saknar behörighet för att Ã¶ppna denna flik"
@@ -1486,8 +1359,7 @@ msgstr "Du saknar behörighet för att Ã¶ppna denna flik"
 msgid "User not found"
 msgstr "Hittade inte användaren"
 
-#: classes/pref/users.php:53
-#: classes/pref/users.php:400
+#: classes/pref/users.php:53 classes/pref/users.php:404
 msgid "Registered"
 msgstr "Registrerad"
 
@@ -1503,106 +1375,96 @@ msgstr "Antal flödesprenumerationer"
 msgid "Subscribed feeds"
 msgstr "Prenumererade flöden"
 
-#: classes/pref/users.php:138
+#: classes/pref/users.php:142
 msgid "Access level: "
 msgstr "BehörighetsnivÃ¥: "
 
-#: classes/pref/users.php:151
+#: classes/pref/users.php:155
 msgid "Change password to"
 msgstr "Nytt lösenord"
 
-#: classes/pref/users.php:157
-#: classes/pref/feeds.php:636
-#: classes/pref/feeds.php:863
+#: classes/pref/users.php:161 classes/pref/feeds.php:649
+#: classes/pref/feeds.php:876
 msgid "Options"
 msgstr "Alternativ"
 
-#: classes/pref/users.php:160
+#: classes/pref/users.php:164
 msgid "E-mail: "
 msgstr "E-post: "
 
-#: classes/pref/users.php:236
+#: classes/pref/users.php:240
 #, php-format
 msgid "Added user <b>%s</b> with password <b>%s</b>"
 msgstr "Lade till användare <b>%s</b> med lösenord <b>%s</b>"
 
-#: classes/pref/users.php:243
+#: classes/pref/users.php:247
 #, php-format
 msgid "Could not create user <b>%s</b>"
 msgstr "Kunde inte skapa användare <b>%s</b>"
 
-#: classes/pref/users.php:247
+#: classes/pref/users.php:251
 #, php-format
 msgid "User <b>%s</b> already exists."
 msgstr "Användaren <b>%s</b> finns redan."
 
-#: classes/pref/users.php:269
+#: classes/pref/users.php:273
 #, php-format
 msgid "Changed password of user <b>%s</b> to <b>%s</b>"
 msgstr "Lösenord för användare <b>%s</b> Ã¤ndrat till <b>%s</b>"
 
-#: classes/pref/users.php:271
+#: classes/pref/users.php:275
 #, php-format
 msgid "Sending new password of user <b>%s</b> to <b>%s</b>"
 msgstr "Nytt lösenord för användare <b>%s</b> skickat till <b>%s</b>"
 
-#: classes/pref/users.php:295
+#: classes/pref/users.php:299
 msgid "[tt-rss] Password change notification"
 msgstr "[tt-rss] Notifikation för Ã¤ndring av lösenord"
 
-#: classes/pref/users.php:338
-#: classes/pref/labels.php:272
-#: classes/pref/filters.php:277
-#: classes/pref/filters.php:325
-#: classes/pref/filters.php:643
-#: classes/pref/filters.php:731
-#: classes/pref/filters.php:758
-#: classes/pref/prefs.php:991
-#: classes/pref/feeds.php:1307
-#: classes/pref/feeds.php:1572
-#: classes/pref/feeds.php:1638
-#: plugins/instances/init.php:284
+#: classes/pref/users.php:342 classes/pref/labels.php:272
+#: classes/pref/filters.php:279 classes/pref/filters.php:327
+#: classes/pref/filters.php:645 classes/pref/filters.php:733
+#: classes/pref/filters.php:760 classes/pref/prefs.php:993
+#: classes/pref/feeds.php:1320 classes/pref/feeds.php:1586
+#: classes/pref/feeds.php:1656 plugins/instances/init.php:284
 msgid "Select"
 msgstr "Markera"
 
-#: classes/pref/users.php:346
+#: classes/pref/users.php:350
 msgid "Create user"
 msgstr "Skapa användare"
 
-#: classes/pref/users.php:350
+#: classes/pref/users.php:354
 msgid "Details"
 msgstr "Detaljer"
 
-#: classes/pref/users.php:352
-#: classes/pref/filters.php:658
+#: classes/pref/users.php:356 classes/pref/filters.php:660
 #: plugins/instances/init.php:293
 msgid "Edit"
 msgstr "Redigera"
 
-#: classes/pref/users.php:399
+#: classes/pref/users.php:403
 msgid "Access Level"
 msgstr "BehörighetsnivÃ¥"
 
-#: classes/pref/users.php:401
+#: classes/pref/users.php:405
 msgid "Last login"
 msgstr "Senaste inloggning"
 
-#: classes/pref/users.php:420
-#: plugins/instances/init.php:334
+#: classes/pref/users.php:426 plugins/instances/init.php:334
 msgid "Click to edit"
 msgstr "Klicka för att redigera"
 
-#: classes/pref/users.php:440
+#: classes/pref/users.php:446
 msgid "No users defined."
 msgstr "Inga användare definierade."
 
-#: classes/pref/users.php:442
+#: classes/pref/users.php:448
 msgid "No matching users found."
 msgstr "Hittade inga matchande användare."
 
-#: classes/pref/labels.php:22
-#: classes/pref/filters.php:266
-#: classes/pref/filters.php:722
+#: classes/pref/labels.php:22 classes/pref/filters.php:268
+#: classes/pref/filters.php:724
 msgid "Caption"
 msgstr "Titel"
 
@@ -1627,124 +1489,116 @@ msgstr "Skapade etikett <b>%s</b>"
 msgid "Clear colors"
 msgstr "Rensa färger"
 
-#: classes/pref/filters.php:94
+#: classes/pref/filters.php:96
 msgid "Articles matching this filter:"
 msgstr "Artiklar som matchar detta filter: "
 
-#: classes/pref/filters.php:131
+#: classes/pref/filters.php:133
 msgid "No recent articles matching this filter have been found."
 msgstr "Inga nya artiklar som matchar detta filter funna."
 
-#: classes/pref/filters.php:135
-msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation."
-msgstr "Komplexa uttryck kanske inte ger nÃ¥gra testresultat pÃ¥ grund av problem med databasens regexpimplementation"
+#: classes/pref/filters.php:137
+msgid ""
+"Complex expressions might not give results while testing due to issues with "
+"database server regexp implementation."
+msgstr ""
+"Komplexa uttryck kanske inte ger nÃ¥gra testresultat pÃ¥ grund av problem med "
+"databasens regexpimplementation"
 
-#: classes/pref/filters.php:272
-#: classes/pref/filters.php:726
-#: classes/pref/filters.php:841
+#: classes/pref/filters.php:274 classes/pref/filters.php:728
+#: classes/pref/filters.php:843
 msgid "Match"
 msgstr "Matcha"
 
-#: classes/pref/filters.php:286
-#: classes/pref/filters.php:334
-#: classes/pref/filters.php:740
-#: classes/pref/filters.php:767
+#: classes/pref/filters.php:288 classes/pref/filters.php:336
+#: classes/pref/filters.php:742 classes/pref/filters.php:769
 msgid "Add"
 msgstr "Lägg till"
 
-#: classes/pref/filters.php:320
-#: classes/pref/filters.php:753
+#: classes/pref/filters.php:322 classes/pref/filters.php:755
 msgid "Apply actions"
 msgstr "Tillämpa Ã¥tgärder"
 
-#: classes/pref/filters.php:370
-#: classes/pref/filters.php:782
+#: classes/pref/filters.php:372 classes/pref/filters.php:784
 msgid "Enabled"
 msgstr "Aktiverat"
 
-#: classes/pref/filters.php:379
-#: classes/pref/filters.php:785
+#: classes/pref/filters.php:381 classes/pref/filters.php:787
 msgid "Match any rule"
 msgstr "Matcha alla regler"
 
-#: classes/pref/filters.php:388
-#: classes/pref/filters.php:788
+#: classes/pref/filters.php:390 classes/pref/filters.php:790
 msgid "Inverse matching"
 msgstr "Invertera matchning"
 
-#: classes/pref/filters.php:400
-#: classes/pref/filters.php:795
+#: classes/pref/filters.php:402 classes/pref/filters.php:797
 msgid "Test"
 msgstr "Test"
 
-#: classes/pref/filters.php:433
+#: classes/pref/filters.php:435
 msgid "(inverse)"
 msgstr "(invertera)"
 
-#: classes/pref/filters.php:432
+#: classes/pref/filters.php:434
 #, php-format
 msgid "%s on %s in %s %s"
 msgstr "%s pÃ¥ %s i %s %s"
 
-#: classes/pref/filters.php:655
+#: classes/pref/filters.php:657
 msgid "Combine"
 msgstr "Kombinera"
 
-#: classes/pref/filters.php:661
-#: classes/pref/feeds.php:1323
-#: classes/pref/feeds.php:1337
+#: classes/pref/filters.php:663 classes/pref/feeds.php:1336
+#: classes/pref/feeds.php:1350
 msgid "Reset sort order"
 msgstr "Ã…terställ sorteringsordning"
 
-#: classes/pref/filters.php:669
-#: classes/pref/feeds.php:1359
+#: classes/pref/filters.php:671 classes/pref/feeds.php:1375
 msgid "Rescore articles"
 msgstr "Poängsätt pÃ¥ nytt"
 
-#: classes/pref/filters.php:798
+#: classes/pref/filters.php:800
 msgid "Create"
 msgstr "Skapa"
 
-#: classes/pref/filters.php:853
+#: classes/pref/filters.php:855
 msgid "Inverse regular expression matching"
 msgstr "Invertera matchning av regulära uttryck"
 
-#: classes/pref/filters.php:855
+#: classes/pref/filters.php:857
 msgid "on field"
 msgstr "i fält"
 
-#: classes/pref/filters.php:861
-#: js/PrefFilterTree.js:45
+#: classes/pref/filters.php:863 js/PrefFilterTree.js:45
+#: plugins/digest/digest.js:242
 msgid "in"
 msgstr "i"
 
-#: classes/pref/filters.php:874
+#: classes/pref/filters.php:876
 msgid "Save rule"
 msgstr "Spara regel"
 
-#: classes/pref/filters.php:874
-#: js/functions.js:1013
+#: classes/pref/filters.php:876 js/functions.js:1013
 msgid "Add rule"
 msgstr "Tillämpa regel"
 
-#: classes/pref/filters.php:897
+#: classes/pref/filters.php:899
 msgid "Perform Action"
 msgstr "Utför aktivitet"
 
-#: classes/pref/filters.php:923
+#: classes/pref/filters.php:925
 msgid "with parameters:"
 msgstr "med parametrar:"
 
-#: classes/pref/filters.php:941
+#: classes/pref/filters.php:943
 msgid "Save action"
 msgstr "Spara aktivitet"
 
-#: classes/pref/filters.php:941
-#: js/functions.js:1039
+#: classes/pref/filters.php:943 js/functions.js:1039
 msgid "Add action"
 msgstr "Lägg till aktivitet"
 
-#: classes/pref/filters.php:964
+#: classes/pref/filters.php:966
 msgid "[No caption]"
 msgstr "[Inge titel]"
 
@@ -1777,15 +1631,21 @@ msgid "Blacklisted tags"
 msgstr "Svartlistade taggar"
 
 #: classes/pref/prefs.php:27
-msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)."
-msgstr "Använd inte följande taggar för automatisk taggning av artiklar (komma-separerad lista)."
+msgid ""
+"When auto-detecting tags in articles these tags will not be applied (comma-"
+"separated list)."
+msgstr ""
+"Använd inte följande taggar för automatisk taggning av artiklar (komma-"
+"separerad lista)."
 
 #: classes/pref/prefs.php:28
 msgid "Automatically mark articles as read"
 msgstr "Märk artiklar som lästa automatiskt"
 
 #: classes/pref/prefs.php:28
-msgid "This option enables marking articles as read automatically while you scroll article list."
+msgid ""
+"This option enables marking articles as read automatically while you scroll "
+"article list."
 msgstr "Markera artiklar som lästa automatisk när du skrollar artikellistan"
 
 #: classes/pref/prefs.php:29
@@ -1797,8 +1657,12 @@ msgid "Combined feed display"
 msgstr "Kombinerad flödesvisning"
 
 #: classes/pref/prefs.php:30
-msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content"
-msgstr "Visa expanderad lista med artiklar, istället för olika visningar för rubriker och artikeltext"
+msgid ""
+"Display expanded list of feed articles, instead of separate displays for "
+"headlines and article content"
+msgstr ""
+"Visa expanderad lista med artiklar, istället för olika visningar för "
+"rubriker och artikeltext"
 
 #: classes/pref/prefs.php:31
 msgid "Confirm marking feed as read"
@@ -1809,13 +1673,16 @@ msgid "Amount of articles to display at once"
 msgstr "Antal artiklar att visa samtidigt"
 
 #: classes/pref/prefs.php:33
-#, fuzzy
 msgid "Default feed update interval"
-msgstr "Standardintervall"
+msgstr "Standardintervall för flödesuppdatering"
 
 #: classes/pref/prefs.php:33
-msgid "Shortest interval at which a feed will be checked for updates regardless of update method"
+msgid ""
+"Shortest interval at which a feed will be checked for updates regardless of "
+"update method"
 msgstr ""
+"Kortaste intervall som ett flöde kommer att kontrolleras för uppdateringar "
+"oavsett uppdateringsmetod"
 
 #: classes/pref/prefs.php:34
 msgid "Mark articles in e-mail digest as read"
@@ -1826,8 +1693,12 @@ msgid "Enable e-mail digest"
 msgstr "Aktivera e-postsammanfattning"
 
 #: classes/pref/prefs.php:35
-msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address"
-msgstr "Skicka dagliga sammanställningar Ã¶ver nya (och olästa) rubriker till din e-post"
+msgid ""
+"This option enables sending daily digest of new (and unread) headlines on "
+"your configured e-mail address"
+msgstr ""
+"Skicka dagliga sammanställningar Ã¶ver nya (och olästa) rubriker till din e-"
+"post"
 
 #: classes/pref/prefs.php:36
 msgid "Try to send digests around specified time"
@@ -1874,8 +1745,11 @@ msgid "On catchup show next feed"
 msgstr "Visa nästa flöde när vi Ã¤r ikapp"
 
 #: classes/pref/prefs.php:44
-msgid "Automatically open next feed with unread articles after marking one as read"
-msgstr "Öppna automatiskt nästa flöde som har olästa artiklar efter att du markerat ett som läst"
+msgid ""
+"Automatically open next feed with unread articles after marking one as read"
+msgstr ""
+"Öppna automatiskt nästa flöde som har olästa artiklar efter att du markerat "
+"ett som läst"
 
 #: classes/pref/prefs.php:45
 msgid "Purge articles after this number of days (0 - disables)"
@@ -1885,7 +1759,7 @@ msgstr "Rensa artikel efter X antal dagar (0 - inaktiverar)"
 msgid "Purge unread articles"
 msgstr "Rensa olästa artiklar"
 
-#: classes/pref/prefs.php:47
+#: classes/pref/prefs.php:47 plugins/mobile/prefs.php:56
 msgid "Reverse headline order (oldest first)"
 msgstr "Omvänd sortering (äldsta Ã¶verst)"
 
@@ -1925,8 +1799,7 @@ msgstr "Ta bort osäkra taggar frÃ¥n artiklar"
 msgid "Strip all but most common HTML tags when reading articles."
 msgstr "Ta bort alla utom de vanligast HTML-taggarna frÃ¥n artiklarna."
 
-#: classes/pref/prefs.php:54
-#: js/prefs.js:1719
+#: classes/pref/prefs.php:54 js/prefs.js:1734
 msgid "Customize stylesheet"
 msgstr "Anpassa stilmall"
 
@@ -1944,12 +1817,13 @@ msgstr "Gruppera rubriker i virtuella flöden"
 
 #: classes/pref/prefs.php:56
 msgid "Special feeds, labels, and categories are grouped by originating feeds"
-msgstr "Speciella flöden, etiketter och kategorier Ã¤r grupperade efter ursprungsflöden"
+msgstr ""
+"Speciella flöden, etiketter och kategorier Ã¤r grupperade efter "
+"ursprungsflöden"
 
 #: classes/pref/prefs.php:57
-#, fuzzy
 msgid "Language"
-msgstr "SprÃ¥k:"
+msgstr "SprÃ¥k"
 
 #: classes/pref/prefs.php:58
 msgid "Theme"
@@ -2045,11 +1919,14 @@ msgid "One time passwords / Authenticator"
 msgstr "(OTP) / Autentifikator"
 
 #: classes/pref/prefs.php:327
-msgid "One time passwords are currently enabled. Enter your current password below to disable."
-msgstr "EngÃ¥ngslösenord Ã¤r för närvarande aktiverade. Ange ditt nuvarande lösenord nedan för att inaktivera."
+msgid ""
+"One time passwords are currently enabled. Enter your current password below "
+"to disable."
+msgstr ""
+"EngÃ¥ngslösenord Ã¤r för närvarande aktiverade. Ange ditt nuvarande lösenord "
+"nedan för att inaktivera."
 
-#: classes/pref/prefs.php:352
-#: classes/pref/prefs.php:403
+#: classes/pref/prefs.php:352 classes/pref/prefs.php:403
 msgid "Enter your password"
 msgstr "Ange lösenord"
 
@@ -2058,17 +1935,20 @@ msgid "Disable OTP"
 msgstr "Stäng av OTP"
 
 #: classes/pref/prefs.php:369
-msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP."
-msgstr "Du behöver en kompatibel autentifikator för att använda detta. Att byta lösenord inaktiverar automatiskt OTP."
+msgid ""
+"You will need a compatible Authenticator to use this. Changing your password "
+"would automatically disable OTP."
+msgstr ""
+"Du behöver en kompatibel autentifikator för att använda detta. Att byta "
+"lösenord inaktiverar automatiskt OTP."
 
 #: classes/pref/prefs.php:371
 msgid "Scan the following code by the Authenticator application:"
 msgstr "Läs in följande QR-kod med autentifikator-applikationen:"
 
 #: classes/pref/prefs.php:408
-#, fuzzy
 msgid "Enter the generated one time password"
-msgstr "Ange ditt engÃ¥ngslösenord:"
+msgstr "Ange det genererade engÃ¥ngslösenordet"
 
 #: classes/pref/prefs.php:422
 msgid "Enable OTP"
@@ -2076,7 +1956,7 @@ msgstr "Aktivera OTP"
 
 #: classes/pref/prefs.php:428
 msgid "PHP GD functions are required for OTP support."
-msgstr ""
+msgstr "PHPs GD-funktioner krävs för OTP stöd."
 
 #: classes/pref/prefs.php:471
 msgid "Some preferences are only available in default profile."
@@ -2104,9 +1984,8 @@ msgid "Save configuration"
 msgstr "Spara konfiguration"
 
 #: classes/pref/prefs.php:675
-#, fuzzy
 msgid "Save and exit preferences"
-msgstr "Lämna inställningarna"
+msgstr "Spara och lämna inställningarna"
 
 #: classes/pref/prefs.php:680
 msgid "Manage profiles"
@@ -2116,89 +1995,97 @@ msgstr "Hantera profiler"
 msgid "Reset to defaults"
 msgstr "Ã…terställ till standard"
 
-#: classes/pref/prefs.php:706
+#: classes/pref/prefs.php:706 classes/pref/prefs.php:708
 msgid "Plugins"
 msgstr "Tillägg"
 
-#: classes/pref/prefs.php:708
-msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect."
-msgstr "Du kommer behöva ladda om Tiny Tiny RSS för att Ã¤ndringarna för tillägg ska träda i kraft."
-
 #: classes/pref/prefs.php:710
-msgid "Download more plugins at tt-rss.org <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forums</a> or <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins\">wiki</a>."
-msgstr "Ladda ner fler tillägg via tt-rss.org <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forum</a> eller <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins\">wiki</a>."
+msgid ""
+"You will need to reload Tiny Tiny RSS for plugin changes to take effect."
+msgstr ""
+"Du kommer behöva ladda om Tiny Tiny RSS för att Ã¤ndringarna för tillägg ska "
+"träda i kraft."
 
-#: classes/pref/prefs.php:736
+#: classes/pref/prefs.php:712
+msgid ""
+"Download more plugins at tt-rss.org <a class=\"visibleLink\" target=\"_blank"
+"\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forums</a> or <a "
+"target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/wiki/Plugins"
+"\">wiki</a>."
+msgstr ""
+"Ladda ner fler tillägg via tt-rss.org <a class=\"visibleLink\" target="
+"\"_blank\" href=\"http://tt-rss.org/forum/viewforum.php?f=22\">forum</a> "
+"eller <a target=\"_blank\" class=\"visibleLink\" href=\"http://tt-rss.org/"
+"wiki/Plugins\">wiki</a>."
+
+#: classes/pref/prefs.php:738
 msgid "System plugins"
 msgstr "Systemtillägg"
 
-#: classes/pref/prefs.php:740
-#: classes/pref/prefs.php:794
+#: classes/pref/prefs.php:742 classes/pref/prefs.php:796
 msgid "Plugin"
 msgstr "Tillägg"
 
-#: classes/pref/prefs.php:741
-#: classes/pref/prefs.php:795
+#: classes/pref/prefs.php:743 classes/pref/prefs.php:797
 msgid "Description"
 msgstr "Beskrivning"
 
-#: classes/pref/prefs.php:742
-#: classes/pref/prefs.php:796
+#: classes/pref/prefs.php:744 classes/pref/prefs.php:798
 msgid "Version"
 msgstr "Version"
 
-#: classes/pref/prefs.php:743
-#: classes/pref/prefs.php:797
+#: classes/pref/prefs.php:745 classes/pref/prefs.php:799
 msgid "Author"
 msgstr "Skapare"
 
-#: classes/pref/prefs.php:772
-#: classes/pref/prefs.php:829
+#: classes/pref/prefs.php:774 classes/pref/prefs.php:831
 msgid "more info"
 msgstr "mer info"
 
-#: classes/pref/prefs.php:781
-#: classes/pref/prefs.php:838
+#: classes/pref/prefs.php:783 classes/pref/prefs.php:840
 msgid "Clear data"
 msgstr "Rensa data"
 
-#: classes/pref/prefs.php:790
+#: classes/pref/prefs.php:792
 msgid "User plugins"
 msgstr "Användartillägg"
 
-#: classes/pref/prefs.php:853
+#: classes/pref/prefs.php:855
 msgid "Enable selected plugins"
 msgstr "Aktivera valda tillägg"
 
-#: classes/pref/prefs.php:920
-#, fuzzy
+#: classes/pref/prefs.php:922
 msgid "Incorrect one time password"
-msgstr "Felaktigt lösenord"
+msgstr "Felaktigt engÃ¥ngslösenord"
 
-#: classes/pref/prefs.php:923
-#: classes/pref/prefs.php:940
+#: classes/pref/prefs.php:925 classes/pref/prefs.php:942
 msgid "Incorrect password"
 msgstr "Felaktigt lösenord"
 
-#: classes/pref/prefs.php:965
+#: classes/pref/prefs.php:967
 #, php-format
-msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline."
-msgstr "Du kan Ã¥sidosätta färger, typsnitt och layout för ditt för närvarande valda tema med anpassade CSS-regler här. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">Denna fil</a> kan användas som grund."
+msgid ""
+"You can override colors, fonts and layout of your currently selected theme "
+"with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink"
+"\" href=\"%s\">This file</a> can be used as a baseline."
+msgstr ""
+"Du kan Ã¥sidosätta färger, typsnitt och layout för ditt för närvarande valda "
+"tema med anpassade CSS-regler här. <a target=\"_blank\" class=\"visibleLink"
+"\" href=\"%s\">Denna fil</a> kan användas som grund."
 
-#: classes/pref/prefs.php:1005
+#: classes/pref/prefs.php:1007
 msgid "Create profile"
 msgstr "Skapa profil"
 
-#: classes/pref/prefs.php:1028
-#: classes/pref/prefs.php:1056
+#: classes/pref/prefs.php:1030 classes/pref/prefs.php:1060
 msgid "(active)"
 msgstr "(aktiva)"
 
-#: classes/pref/prefs.php:1090
+#: classes/pref/prefs.php:1094
 msgid "Remove selected profiles"
 msgstr "Radera markerade profiler"
 
-#: classes/pref/prefs.php:1092
+#: classes/pref/prefs.php:1096
 msgid "Activate profile"
 msgstr "Aktivera profil"
 
@@ -2206,257 +2093,299 @@ msgstr "Aktivera profil"
 msgid "Check to enable field"
 msgstr "Markera för att aktivera"
 
-#: classes/pref/feeds.php:546
+#: classes/pref/feeds.php:559
 msgid "Feed Title"
 msgstr "Flödestitel"
 
-#: classes/pref/feeds.php:587
-#: classes/pref/feeds.php:822
+#: classes/pref/feeds.php:600 classes/pref/feeds.php:835
 msgid "Update"
 msgstr "Uppdatera"
 
-#: classes/pref/feeds.php:602
-#: classes/pref/feeds.php:838
+#: classes/pref/feeds.php:615 classes/pref/feeds.php:851
 msgid "Article purging:"
 msgstr "Artikelrensning:"
 
-#: classes/pref/feeds.php:632
-msgid "<b>Hint:</b> you need to fill in your login information if your feed requires authentication, except for Twitter feeds."
-msgstr "<b>Tips:</b> du mÃ¥ste ange din inloggningsuppgifter om ditt flöde kräver autentisering, dock ej för Twitter-flöden."
+#: classes/pref/feeds.php:645
+msgid ""
+"<b>Hint:</b> you need to fill in your login information if your feed "
+"requires authentication, except for Twitter feeds."
+msgstr ""
+"<b>Tips:</b> du mÃ¥ste ange din inloggningsuppgifter om ditt flöde kräver "
+"autentisering, dock ej för Twitter-flöden."
 
-#: classes/pref/feeds.php:648
-#: classes/pref/feeds.php:867
+#: classes/pref/feeds.php:661 classes/pref/feeds.php:880
 msgid "Hide from Popular feeds"
 msgstr "Dölj frÃ¥n populära flöden"
 
-#: classes/pref/feeds.php:660
-#: classes/pref/feeds.php:873
+#: classes/pref/feeds.php:673 classes/pref/feeds.php:886
 msgid "Include in e-mail digest"
 msgstr "Inkludera i e-postsammanfattning"
 
-#: classes/pref/feeds.php:673
-#: classes/pref/feeds.php:879
+#: classes/pref/feeds.php:686 classes/pref/feeds.php:892
 msgid "Always display image attachments"
 msgstr "Visa alltid bilder"
 
-#: classes/pref/feeds.php:686
-#: classes/pref/feeds.php:887
+#: classes/pref/feeds.php:699 classes/pref/feeds.php:900
 msgid "Do not embed images"
 msgstr "Bädda inte in bilder"
 
-#: classes/pref/feeds.php:699
-#: classes/pref/feeds.php:895
+#: classes/pref/feeds.php:712 classes/pref/feeds.php:908
 msgid "Cache images locally"
 msgstr "Cacha bilder lokalt"
 
-#: classes/pref/feeds.php:711
-#: classes/pref/feeds.php:901
+#: classes/pref/feeds.php:724 classes/pref/feeds.php:914
 msgid "Mark updated articles as unread"
 msgstr "Makera uppdaterade artiklar som olästa"
 
-#: classes/pref/feeds.php:717
+#: classes/pref/feeds.php:730
 msgid "Icon"
 msgstr "Ikon"
 
-#: classes/pref/feeds.php:731
+#: classes/pref/feeds.php:744
 msgid "Replace"
 msgstr "Ersätt"
 
-#: classes/pref/feeds.php:753
+#: classes/pref/feeds.php:766
 msgid "Resubscribe to push updates"
 msgstr "Ã…terprenumerera pÃ¥ push-uppdateringar:"
 
-#: classes/pref/feeds.php:760
+#: classes/pref/feeds.php:773
 msgid "Resets PubSubHubbub subscription status for push-enabled feeds."
 msgstr "Ã…terställ PubSubHubbub-prenumerationer för push-uppdaterade feeds."
 
-#: classes/pref/feeds.php:1156
-#: classes/pref/feeds.php:1209
+#: classes/pref/feeds.php:1169 classes/pref/feeds.php:1222
 msgid "All done."
 msgstr "Klart."
 
-#: classes/pref/feeds.php:1264
+#: classes/pref/feeds.php:1277
 msgid "Feeds with errors"
 msgstr "Flöden med fel"
 
-#: classes/pref/feeds.php:1284
+#: classes/pref/feeds.php:1297
 msgid "Inactive feeds"
 msgstr "Inaktiva flöden"
 
-#: classes/pref/feeds.php:1321
+#: classes/pref/feeds.php:1334
 msgid "Edit selected feeds"
 msgstr "Redigera valda flöden"
 
-#: classes/pref/feeds.php:1325
-#: js/prefs.js:1764
+#: classes/pref/feeds.php:1338 js/prefs.js:1779
 msgid "Batch subscribe"
 msgstr "Massprenumerera"
 
-#: classes/pref/feeds.php:1332
+#: classes/pref/feeds.php:1345
 msgid "Categories"
 msgstr "Kategorier"
 
-#: classes/pref/feeds.php:1335
+#: classes/pref/feeds.php:1348
 msgid "Add category"
 msgstr "Lägg till kategori"
 
-#: classes/pref/feeds.php:1339
+#: classes/pref/feeds.php:1352
 msgid "Remove selected"
 msgstr "Ta bort markerade"
 
-#: classes/pref/feeds.php:1350
+#: classes/pref/feeds.php:1361
+msgid "(Un)hide empty categories"
+msgstr "Visa/dölj tomma kategorier"
+
+#: classes/pref/feeds.php:1366
 msgid "More actions..."
 msgstr "Fler Ã¥tgärder..."
 
-#: classes/pref/feeds.php:1354
+#: classes/pref/feeds.php:1370
 msgid "Manual purge"
 msgstr "Manuell rensning"
 
-#: classes/pref/feeds.php:1358
+#: classes/pref/feeds.php:1374
 msgid "Clear feed data"
 msgstr "Rensa flödesdata"
 
-#: classes/pref/feeds.php:1409
+#: classes/pref/feeds.php:1425
 msgid "OPML"
 msgstr "OPML"
 
-#: classes/pref/feeds.php:1411
-msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings."
-msgstr "Med OPML kan du importera och exportera dina flöden, filter, etiketter och Tin Tiny RSS-inställningar"
+#: classes/pref/feeds.php:1427
+msgid ""
+"Using OPML you can export and import your feeds, filters, labels and Tiny "
+"Tiny RSS settings."
+msgstr ""
+"Med OPML kan du importera och exportera dina flöden, filter, etiketter och "
+"Tin Tiny RSS-inställningar"
 
-#: classes/pref/feeds.php:1411
+#: classes/pref/feeds.php:1429
 msgid "Only main settings profile can be migrated using OPML."
 msgstr "Endast huvudprofilens inställningar kan migreras med OPML."
 
-#: classes/pref/feeds.php:1424
+#: classes/pref/feeds.php:1442
 msgid "Import my OPML"
 msgstr "Importera OPML"
 
-#: classes/pref/feeds.php:1428
+#: classes/pref/feeds.php:1446
 msgid "Filename:"
 msgstr "Filnamn:"
 
-#: classes/pref/feeds.php:1430
+#: classes/pref/feeds.php:1448
 msgid "Include settings"
 msgstr "Inkludera inställningar"
 
-#: classes/pref/feeds.php:1434
+#: classes/pref/feeds.php:1452
 msgid "Export OPML"
 msgstr "Exportera OPML"
 
-#: classes/pref/feeds.php:1438
-msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below."
-msgstr "Din OPML-fil kan publiceras publikt och den kan bli prenumererad pÃ¥ av alla som känner till URLen nedan"
+#: classes/pref/feeds.php:1456
+msgid ""
+"Your OPML can be published publicly and can be subscribed by anyone who "
+"knows the URL below."
+msgstr ""
+"Din OPML-fil kan publiceras publikt och den kan bli prenumererad pÃ¥ av alla "
+"som känner till URLen nedan"
 
-#: classes/pref/feeds.php:1440
-msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds."
-msgstr "Publicerad OPML inkluderar inte dina Tiny Tiny RSS-inställningar, flöden som kräver autentisering eller flöden som Ã¤r dolda under populära flöden."
+#: classes/pref/feeds.php:1458
+msgid ""
+"Published OPML does not include your Tiny Tiny RSS settings, feeds that "
+"require authentication or feeds hidden from Popular feeds."
+msgstr ""
+"Publicerad OPML inkluderar inte dina Tiny Tiny RSS-inställningar, flöden som "
+"kräver autentisering eller flöden som Ã¤r dolda under populära flöden."
 
-#: classes/pref/feeds.php:1442
+#: classes/pref/feeds.php:1460
 msgid "Public OPML URL"
 msgstr "Publik OPML-URL"
 
-#: classes/pref/feeds.php:1443
+#: classes/pref/feeds.php:1461
 msgid "Display published OPML URL"
 msgstr "Visa publicerad OPML-URL"
 
-#: classes/pref/feeds.php:1452
+#: classes/pref/feeds.php:1470
 msgid "Firefox integration"
 msgstr "Firefox-integration"
 
-#: classes/pref/feeds.php:1454
-msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below."
-msgstr "Denna Tiny Tiny RSS-webbplats kan användas som en flödesläsare för Firefox genom att klicka pÃ¥ länken nedan."
+#: classes/pref/feeds.php:1472
+msgid ""
+"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the "
+"link below."
+msgstr ""
+"Denna Tiny Tiny RSS-webbplats kan användas som en flödesläsare för Firefox "
+"genom att klicka pÃ¥ länken nedan."
 
-#: classes/pref/feeds.php:1461
+#: classes/pref/feeds.php:1479
 msgid "Click here to register this site as a feed reader."
 msgstr "Klicka här för att registrera denna webbplats som en flödesläsare."
 
-#: classes/pref/feeds.php:1469
+#: classes/pref/feeds.php:1487
 msgid "Published & shared articles / Generated feeds"
 msgstr "Publicerade och delade artiklar / Genererade flöden"
 
-#: classes/pref/feeds.php:1471
-msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below."
-msgstr "Publicerade artiklar exporteras som ett publikt RSS-flöde och kan prenumeras pÃ¥ av alla som har URLen nedan."
+#: classes/pref/feeds.php:1489
+msgid "Published articles and generated feeds"
+msgstr "Publicerade artiklar och genererade flöden"
 
-#: classes/pref/feeds.php:1479
+#: classes/pref/feeds.php:1491
+msgid ""
+"Published articles are exported as a public RSS feed and can be subscribed "
+"by anyone who knows the URL specified below."
+msgstr ""
+"Publicerade artiklar exporteras som ett publikt RSS-flöde och kan prenumeras "
+"pÃ¥ av alla som har URLen nedan."
+
+#: classes/pref/feeds.php:1497
 msgid "Display URL"
 msgstr "Visa URL"
 
-#: classes/pref/feeds.php:1482
+#: classes/pref/feeds.php:1500
 msgid "Clear all generated URLs"
 msgstr "Rensa alla genererade URLer"
 
-#: classes/pref/feeds.php:1486
+#: classes/pref/feeds.php:1502
+msgid "Articles shared by URL"
+msgstr "Artiklar delade per URL"
+
+#: classes/pref/feeds.php:1504
 msgid "You can disable all articles shared by unique URLs here."
 msgstr "Du kan inaktivera alla artiklar som delas ut med unik URL här."
 
-#: classes/pref/feeds.php:1491
+#: classes/pref/feeds.php:1507
 msgid "Unshare all articles"
 msgstr "Ta bort delning av alla artiklar"
 
-#: classes/pref/feeds.php:1568
-msgid "These feeds have not been updated with new content for 3 months (oldest first):"
-msgstr "Följande flöden har inte uppdaterats med nytt innehÃ¥ll pÃ¥ 3 mÃ¥nader (äldst först): "
+#: classes/pref/feeds.php:1582
+msgid ""
+"These feeds have not been updated with new content for 3 months (oldest "
+"first):"
+msgstr ""
+"Följande flöden har inte uppdaterats med nytt innehÃ¥ll pÃ¥ 3 mÃ¥nader (äldst "
+"först): "
 
-#: classes/pref/feeds.php:1604
-#: classes/pref/feeds.php:1670
+#: classes/pref/feeds.php:1619 classes/pref/feeds.php:1689
 msgid "Click to edit feed"
 msgstr "Klicka för att redigera flöde"
 
-#: classes/pref/feeds.php:1622
-#: classes/pref/feeds.php:1690
+#: classes/pref/feeds.php:1637 classes/pref/feeds.php:1709
 msgid "Unsubscribe from selected feeds"
 msgstr "Ta bort prenumeration för valda flöden"
 
-#: classes/pref/feeds.php:1795
+#: classes/pref/feeds.php:1648
+msgid "These feeds have not been updated because of errors:"
+msgstr "Följande flöden har inte blivit uppdaterade pga fel:"
+
+#: classes/pref/feeds.php:1814
 msgid "Add one valid RSS feed per line (no feed detection is done)"
 msgstr "Lägg till ett giltigt RSS-flöde per rad (ingen flödesupptäckt görs)"
 
-#: classes/pref/feeds.php:1804
+#: classes/pref/feeds.php:1823
 msgid "Feeds to subscribe, One per line"
 msgstr "Flöden att prenumerera pÃ¥, ett per rad"
 
-#: classes/pref/feeds.php:1826
+#: classes/pref/feeds.php:1845
 msgid "Feeds require authentication."
 msgstr "Flödet kräver inloggning."
 
-#: classes/pref/system.php:29
+#: classes/pref/system.php:25
 msgid "Error Log"
 msgstr "Fellogg"
 
-#: classes/pref/system.php:40
+#: classes/pref/system.php:36
 msgid "Refresh"
 msgstr "Uppdatera"
 
-#: classes/pref/system.php:43
-#, fuzzy
-msgid "Clear log"
-msgstr "Rensa färger"
-
-#: classes/pref/system.php:48
+#: classes/pref/system.php:41
 msgid "Error"
 msgstr "Fel"
 
-#: classes/pref/system.php:49
+#: classes/pref/system.php:42
 msgid "Filename"
 msgstr "Filnamn"
 
-#: classes/pref/system.php:50
+#: classes/pref/system.php:43
 msgid "Message"
 msgstr "Meddelande"
 
-#: classes/pref/system.php:52
+#: classes/pref/system.php:45
 msgid "Date"
 msgstr "Datum"
 
+#: plugins/digest/digest_body.php:57
+msgid ""
+"Your browser doesn't support Javascript, which is required for this "
+"application to function properly. Please check your browser settings."
+msgstr ""
+"Din webbläsare stöder inte Javascript som krävs för att denna applikation "
+"ska fungera som den ska. Kontrollera dina webbläsarinställningar."
+
+#: plugins/digest/digest_body.php:72
+msgid "Hello,"
+msgstr "Hej,"
+
+#: plugins/digest/digest_body.php:78
+msgid "Regular version"
+msgstr "Standardversion"
+
 #: plugins/close_button/init.php:22
 msgid "Close article"
 msgstr "Stäng artikel"
 
-#: plugins/nsfw/init.php:29
-#: plugins/nsfw/init.php:40
+#: plugins/nsfw/init.php:29 plugins/nsfw/init.php:40
 msgid "Not work safe (click to toggle)"
 msgstr "NSFW (klicka för att växla)"
 
@@ -2484,15 +2413,61 @@ msgstr "Lösenord uppdaterat."
 msgid "Old password is incorrect."
 msgstr "Felaktigt gammalt lösenord."
 
-#: plugins/mailto/init.php:49
-#: plugins/mailto/init.php:55
-#: plugins/mail/init.php:64
-#: plugins/mail/init.php:70
+#: plugins/mobile/mobile-functions.php:64
+#: plugins/mobile/mobile-functions.php:140
+#: plugins/mobile/mobile-functions.php:176
+#: plugins/mobile/mobile-functions.php:203
+#: plugins/mobile/mobile-functions.php:239
+#: plugins/mobile/mobile-functions.php:376 plugins/mobile/prefs.php:25
+msgid "Home"
+msgstr "Hem"
+
+#: plugins/mobile/mobile-functions.php:412
+msgid "Nothing found (click to reload feed)."
+msgstr "Inget kunde hittas (klicka för att ladda om flöde)"
+
+#: plugins/mobile/login_form.php:52
+msgid "Open regular version"
+msgstr "Öppna normal version"
+
+#: plugins/mobile/prefs.php:30
+msgid "Enable categories"
+msgstr "Aktivera kategorier"
+
+#: plugins/mobile/prefs.php:31 plugins/mobile/prefs.php:36
+#: plugins/mobile/prefs.php:42 plugins/mobile/prefs.php:47
+#: plugins/mobile/prefs.php:52 plugins/mobile/prefs.php:57
+msgid "ON"
+msgstr "PÃ…"
+
+#: plugins/mobile/prefs.php:31 plugins/mobile/prefs.php:36
+#: plugins/mobile/prefs.php:42 plugins/mobile/prefs.php:47
+#: plugins/mobile/prefs.php:52 plugins/mobile/prefs.php:57
+msgid "OFF"
+msgstr "AV"
+
+#: plugins/mobile/prefs.php:35
+msgid "Browse categories like folders"
+msgstr "Bläddra i kategorier som i mappar"
+
+#: plugins/mobile/prefs.php:41
+msgid "Show images in posts"
+msgstr "Visa bilder i artiklar"
+
+#: plugins/mobile/prefs.php:46
+msgid "Hide read articles and feeds"
+msgstr "Dölj lästa artiklar och flöden"
+
+#: plugins/mobile/prefs.php:51
+msgid "Sort feeds by unread count"
+msgstr "Sortera flöden efter antal olästa artiklar"
+
+#: plugins/mailto/init.php:49 plugins/mailto/init.php:55
+#: plugins/mail/init.php:64 plugins/mail/init.php:70
 msgid "[Forwarded]"
 msgstr "[Vidarebefordrat]"
 
-#: plugins/mailto/init.php:49
-#: plugins/mail/init.php:64
+#: plugins/mailto/init.php:49 plugins/mail/init.php:64
 msgid "Multiple articles"
 msgstr "Flera artiklar"
 
@@ -2505,7 +2480,8 @@ msgid "Forward selected article(s) by email."
 msgstr "Vidarebefordra markerade artiklar med e-post"
 
 #: plugins/mailto/init.php:78
-msgid "You should be able to edit the message before sending in your mail client."
+msgid ""
+"You should be able to edit the message before sending in your mail client."
 msgstr "Du bör kunna redigera ditt meddelande innan det skickas"
 
 #: plugins/mailto/init.php:83
@@ -2517,30 +2493,42 @@ msgid "Bookmarklets"
 msgstr "Bookmarklets"
 
 #: plugins/bookmarklets/init.php:22
-msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it."
-msgstr "Dra länken nedan till din webbläsares verktygsrad, Ã¶ppna det flöde du Ã¤r intresserad av i webbläsaren och klicka pÃ¥ länken för att prenumerara pÃ¥ det."
+msgid ""
+"Drag the link below to your browser toolbar, open the feed you're interested "
+"in in your browser and click on the link to subscribe to it."
+msgstr ""
+"Dra länken nedan till din webbläsares verktygsrad, Ã¶ppna det flöde du Ã¤r "
+"intresserad av i webbläsaren och klicka pÃ¥ länken för att prenumerara pÃ¥ det."
 
 #: plugins/bookmarklets/init.php:26
 #, php-format
 msgid "Subscribe to %s in Tiny Tiny RSS?"
 msgstr "Prenumerera pÃ¥ %s i Tiny Tiny RSS?"
 
-#: plugins/bookmarklets/init.php:31
+#: plugins/bookmarklets/init.php:30
 msgid "Subscribe in Tiny Tiny RSS"
 msgstr "Prenumerera i Tiny Tiny RSS"
 
-#: plugins/bookmarklets/init.php:34
+#: plugins/bookmarklets/init.php:32
 msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS"
-msgstr "Använd denna bookmarklet för att publicera webbsidor genom Tiny Tiny RSS"
+msgstr ""
+"Använd denna bookmarklet för att publicera webbsidor genom Tiny Tiny RSS"
 
 #: plugins/import_export/init.php:58
 msgid "Import and export"
 msgstr "Importera och exportera"
 
 #: plugins/import_export/init.php:60
-#, fuzzy
-msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances of same version."
-msgstr "Du kan importera och exportera dina stjärnmärkta och arkiverad artiklar sÃ¥ att du har en backup eller för att flytta mellan tt-rss instanser."
+msgid "Article archive"
+msgstr "Artikelarkiv"
+
+#: plugins/import_export/init.php:62
+msgid ""
+"You can export and import your Starred and Archived articles for safekeeping "
+"or when migrating between tt-rss instances."
+msgstr ""
+"Du kan importera och exportera dina stjärnmärkta och arkiverad artiklar sÃ¥ "
+"att du har en backup eller för att flytta mellan tt-rss instanser."
 
 #: plugins/import_export/init.php:65
 msgid "Export my data"
@@ -2550,49 +2538,48 @@ msgstr "Exportera min data"
 msgid "Import"
 msgstr "Importera"
 
-#: plugins/import_export/init.php:219
+#: plugins/import_export/init.php:217
 msgid "Could not import: incorrect schema version."
 msgstr "Kunde inte importera: inkorrekt version av databasschema"
 
-#: plugins/import_export/init.php:224
+#: plugins/import_export/init.php:222
 msgid "Could not import: unrecognized document format."
 msgstr "Kunde inte importera: okänt filformat"
 
-#: plugins/import_export/init.php:383
+#: plugins/import_export/init.php:381
 msgid "Finished: "
 msgstr "Klart:"
 
-#: plugins/import_export/init.php:384
+#: plugins/import_export/init.php:382
 #, php-format
 msgid "%d article processed, "
 msgid_plural "%d articles processed, "
 msgstr[0] "%d artikel bearbetad, "
 msgstr[1] "%d artiklar bearbetade, "
 
-#: plugins/import_export/init.php:385
+#: plugins/import_export/init.php:383
 #, php-format
 msgid "%d imported, "
 msgid_plural "%d imported, "
 msgstr[0] "%d importerat, "
 msgstr[1] "%d importerade, "
 
-#: plugins/import_export/init.php:386
+#: plugins/import_export/init.php:384
 #, php-format
 msgid "%d feed created."
 msgid_plural "%d feeds created."
 msgstr[0] "%d flöde skapat."
 msgstr[1] "%d flöden skapade."
 
-#: plugins/import_export/init.php:391
+#: plugins/import_export/init.php:389
 msgid "Could not load XML document."
 msgstr "Kunde inte ladda XML-filen."
 
-#: plugins/import_export/init.php:403
+#: plugins/import_export/init.php:401
 msgid "Prepare data"
 msgstr "Förbered data"
 
-#: plugins/import_export/init.php:446
-#: plugins/googlereaderimport/init.php:92
+#: plugins/import_export/init.php:444 plugins/googlereaderimport/init.php:92
 msgid "No file uploaded."
 msgstr "Ingen fil uppladdad."
 
@@ -2612,11 +2599,22 @@ msgstr "Ämne:"
 msgid "Send e-mail"
 msgstr "Skicka e-post"
 
-#: plugins/note/init.php:26
-#: plugins/note/note.js:11
+#: plugins/note/init.php:26 plugins/note/note.js:11
 msgid "Edit article note"
 msgstr "Redigera artikelnotering"
 
+#: plugins/example/init.php:36
+msgid "Example Pane"
+msgstr "Exempelpanel"
+
+#: plugins/example/init.php:67
+msgid "Sample value"
+msgstr "Exempelvärde"
+
+#: plugins/example/init.php:73
+msgid "Set value"
+msgstr "Ange värde"
+
 #: plugins/googlereaderimport/init.php:178
 #, php-format
 msgid "All done. %d out of %d articles imported."
@@ -2642,35 +2640,29 @@ msgstr "Importera mina stjärnmärkta objekt"
 msgid "Linked"
 msgstr "Länkad"
 
-#: plugins/instances/init.php:204
-#: plugins/instances/init.php:395
+#: plugins/instances/init.php:204 plugins/instances/init.php:395
 msgid "Instance"
 msgstr "Instans"
 
-#: plugins/instances/init.php:215
-#: plugins/instances/init.php:312
+#: plugins/instances/init.php:215 plugins/instances/init.php:312
 #: plugins/instances/init.php:404
 msgid "Instance URL"
 msgstr "Instans-URL"
 
-#: plugins/instances/init.php:226
-#: plugins/instances/init.php:414
+#: plugins/instances/init.php:226 plugins/instances/init.php:414
 msgid "Access key:"
 msgstr "Accessnyckel:"
 
-#: plugins/instances/init.php:229
-#: plugins/instances/init.php:313
+#: plugins/instances/init.php:229 plugins/instances/init.php:313
 #: plugins/instances/init.php:417
 msgid "Access key"
 msgstr "Accessnyckel"
 
-#: plugins/instances/init.php:233
-#: plugins/instances/init.php:421
+#: plugins/instances/init.php:233 plugins/instances/init.php:421
 msgid "Use one access key for both linked instances."
 msgstr "Använd samma accessnyckel för bägge länkade instanserna"
 
-#: plugins/instances/init.php:241
-#: plugins/instances/init.php:429
+#: plugins/instances/init.php:241 plugins/instances/init.php:429
 msgid "Generate new key"
 msgstr "Skapa en ny nyckel"
 
@@ -2679,8 +2671,12 @@ msgid "Link instance"
 msgstr "Länka instanser"
 
 #: plugins/instances/init.php:304
-msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:"
-msgstr "Du kan ansluta till andra instanser av Tiny Tiny RSS för att dela populära flöde. Länka till denna instans genom att använd följande URL:"
+msgid ""
+"You can connect other instances of Tiny Tiny RSS to this one to share "
+"Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:"
+msgstr ""
+"Du kan ansluta till andra instanser av Tiny Tiny RSS för att dela populära "
+"flöde. Länka till denna instans genom att använd följande URL:"
 
 #: plugins/instances/init.php:314
 msgid "Last connected"
@@ -2706,8 +2702,7 @@ msgstr "Dela via URL"
 msgid "You can share this article by the following unique URL:"
 msgstr "Du kan dela denna artikel genom följande unika URL:"
 
-#: plugins/updater/init.php:321
-#: plugins/updater/init.php:338
+#: plugins/updater/init.php:321 plugins/updater/init.php:338
 #: plugins/updater/updater.js:10
 msgid "Update Tiny Tiny RSS"
 msgstr "Uppdatera Tiny Tiny RSS"
@@ -2717,9 +2712,8 @@ msgid "Your Tiny Tiny RSS installation is up to date."
 msgstr "Din Tiny Tiny RSS Ã¤r uppdaterad till senaste version."
 
 #: plugins/updater/init.php:349
-#, fuzzy
 msgid "Do not close this dialog until updating is finished."
-msgstr "Stäng inte denna dialog förrän uppdatering Ã¤r klar. Ta en backup av din tt-rss-katalog innan du fortsätter."
+msgstr "Stäng inte denna dialog förrän uppdatering Ã¤r klar."
 
 #: plugins/updater/init.php:358
 msgid "It is suggested to backup your tt-rss directory first."
@@ -2730,8 +2724,14 @@ msgid "Your database will not be modified."
 msgstr "Din databas kommer inte att modifieras."
 
 #: plugins/updater/init.php:360
-msgid "Your current tt-rss installation directory will not be modified. It will be renamed and left in the parent directory. You will be able to migrate all your customized files after update finishes."
+msgid ""
+"Your current tt-rss installation directory will not be modified. It will be "
+"renamed and left in the parent directory. You will be able to migrate all "
+"your customized files after update finishes."
 msgstr ""
+"Katalogen för din nuvarande tt-rss-installation kommer inte att modifieras. "
+"Den kommer att döpas om och lämnas i moderkatalogen. Du kommer att kunna "
+"migrera alla dina anpassade filer när uppdateringen Ã¤r klar."
 
 #: plugins/updater/init.php:361
 msgid "Ready to update."
@@ -2741,35 +2741,37 @@ msgstr "Redo att uppdatera."
 msgid "Start update"
 msgstr "Starta uppdateringen"
 
-#: js/feedlist.js:397
-#: js/feedlist.js:425
+#: js/feedlist.js:395 js/feedlist.js:423 plugins/digest/digest.js:26
 msgid "Mark all articles in %s as read?"
 msgstr "Märk alla artiklar i %s som lästa?"
 
-#: js/feedlist.js:416
+#: js/feedlist.js:414
 msgid "Mark all articles in %s older than 1 day as read?"
 msgstr "Markera alla artiklar i %s Ã¤ldre Ã¤n 1 dag som lästa?"
 
-#: js/feedlist.js:419
+#: js/feedlist.js:417
 msgid "Mark all articles in %s older than 1 week as read?"
 msgstr "Markera alla artiklar i %s Ã¤ldre Ã¤n 1 vecka som lästa?"
 
-#: js/feedlist.js:422
+#: js/feedlist.js:420
 msgid "Mark all articles in %s older than 2 weeks as read?"
 msgstr "Markera alla artiklar i %s Ã¤ldre Ã¤n 2 veckor som lästa?"
 
 #: js/functions.js:65
 msgid "The error will be reported to the configured log destination."
-msgstr ""
+msgstr "Felet kommer att skrivas ut i konfigurerad loggfil."
 
 #: js/functions.js:107
-msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database."
-msgstr "Vill du rapportera detta fel till tt-rss.org? Rapporten kommer innehÃ¥lla information om din webbläsare och din ip-adress."
+msgid ""
+"Are you sure to report this exception to tt-rss.org? The report will include "
+"your browser information. Your IP would be saved in the database."
+msgstr ""
+"Vill du rapportera detta fel till tt-rss.org? Rapporten kommer innehÃ¥lla "
+"information om din webbläsare och din ip-adress."
 
 #: js/functions.js:236
-#, fuzzy
 msgid "Click to close"
-msgstr "Klicka för att pausa"
+msgstr "Klicka för att stänga"
 
 #: js/functions.js:612
 msgid "Error explained"
@@ -2856,15 +2858,18 @@ msgid "Create Filter"
 msgstr "Skapa filter"
 
 #: js/functions.js:1191
-msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update."
-msgstr "Ã…terställ prenumeration? Tiny Tiny RSS kommer försöka prenumerera pÃ¥ notifikationshubben igen vid nästa flödesuppdatering."
+msgid ""
+"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification "
+"hub again on next feed update."
+msgstr ""
+"Ã…terställ prenumeration? Tiny Tiny RSS kommer försöka prenumerera pÃ¥ "
+"notifikationshubben igen vid nästa flödesuppdatering."
 
 #: js/functions.js:1202
 msgid "Subscription reset."
 msgstr "Prenumeration Ã¥terställd."
 
-#: js/functions.js:1212
-#: js/tt-rss.js:677
+#: js/functions.js:1212 js/tt-rss.js:650
 msgid "Unsubscribe from %s?"
 msgstr "Säg upp prenumeration pÃ¥ %s?"
 
@@ -2880,14 +2885,11 @@ msgstr "Ange kategorititel:"
 msgid "Generate new syndication address for this feed?"
 msgstr "Generera en ny syndikeringsadress för detta flöde?"
 
-#: js/functions.js:1359
-#: js/prefs.js:1231
+#: js/functions.js:1359 js/prefs.js:1231
 msgid "Trying to change address..."
 msgstr "Försöker Ã¤ndra adress..."
 
-#: js/functions.js:1546
-#: js/tt-rss.js:422
-#: js/tt-rss.js:658
+#: js/functions.js:1546 js/tt-rss.js:421 js/tt-rss.js:631
 msgid "You can't edit this kind of feed."
 msgstr "Detta typ av flöde kan inte redigeras."
 
@@ -2895,9 +2897,7 @@ msgstr "Detta typ av flöde kan inte redigeras."
 msgid "Edit Feed"
 msgstr "Redigera flöde"
 
-#: js/functions.js:1567
-#: js/prefs.js:194
-#: js/prefs.js:749
+#: js/functions.js:1567 js/prefs.js:194 js/prefs.js:749
 msgid "Saving data..."
 msgstr "Sparar data..."
 
@@ -2905,33 +2905,29 @@ msgstr "Sparar data..."
 msgid "More Feeds"
 msgstr "Fler flöden"
 
-#: js/functions.js:1660
-#: js/functions.js:1770
-#: js/prefs.js:397
-#: js/prefs.js:427
-#: js/prefs.js:459
-#: js/prefs.js:642
-#: js/prefs.js:662
-#: js/prefs.js:1207
+#: js/functions.js:1660 js/functions.js:1770 js/prefs.js:397 js/prefs.js:427
+#: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1207
 #: js/prefs.js:1352
 msgid "No feeds are selected."
 msgstr "Inget flöde valt."
 
 #: js/functions.js:1702
-msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed."
-msgstr "Radera markerade flöden frÃ¥n arkivet? Flöden med sparade artiklar kommer inte raderas."
+msgid ""
+"Remove selected feeds from the archive? Feeds with stored articles will not "
+"be removed."
+msgstr ""
+"Radera markerade flöden frÃ¥n arkivet? Flöden med sparade artiklar kommer "
+"inte raderas."
 
 #: js/functions.js:1741
 msgid "Feeds with update errors"
 msgstr "Flöden med uppdateringsfel"
 
-#: js/functions.js:1752
-#: js/prefs.js:1189
+#: js/functions.js:1752 js/prefs.js:1189
 msgid "Remove selected feeds?"
 msgstr "Ta bort markerade flöden?"
 
-#: js/functions.js:1755
-#: js/prefs.js:1192
+#: js/functions.js:1755 js/prefs.js:1192
 msgid "Removing selected feeds..."
 msgstr "Tar bort valda flöden..."
 
@@ -2987,23 +2983,21 @@ msgstr "Radera markerade etiketter?"
 msgid "Removing selected labels..."
 msgstr "Tar bort valda etiketter..."
 
-#: js/prefs.js:295
-#: js/prefs.js:1393
+#: js/prefs.js:295 js/prefs.js:1393
 msgid "No labels are selected."
 msgstr "Inga etiketter valda."
 
 #: js/prefs.js:309
-msgid "Remove selected users? Neither default admin nor your account will be removed."
+msgid ""
+"Remove selected users? Neither default admin nor your account will be "
+"removed."
 msgstr "Radera markerade användare? Varken admin eller ditt konto kan raderas."
 
 #: js/prefs.js:312
 msgid "Removing selected users..."
 msgstr "Tar bort valda användare..."
 
-#: js/prefs.js:326
-#: js/prefs.js:507
-#: js/prefs.js:528
-#: js/prefs.js:567
+#: js/prefs.js:326 js/prefs.js:507 js/prefs.js:528 js/prefs.js:567
 msgid "No users are selected."
 msgstr "Ingen användare vald."
 
@@ -3015,9 +3009,7 @@ msgstr "Radera markerade filter?"
 msgid "Removing selected filters..."
 msgstr "Tar bort valda filter..."
 
-#: js/prefs.js:359
-#: js/prefs.js:597
-#: js/prefs.js:616
+#: js/prefs.js:359 js/prefs.js:597 js/prefs.js:616
 msgid "No filters are selected."
 msgstr "Inga filter valda."
 
@@ -3057,9 +3049,7 @@ msgstr "Användarnamnet kan inte vara tomt."
 msgid "Saving user..."
 msgstr "Sparar användare..."
 
-#: js/prefs.js:512
-#: js/prefs.js:533
-#: js/prefs.js:572
+#: js/prefs.js:512 js/prefs.js:533 js/prefs.js:572
 msgid "Please select only one user."
 msgstr "Markera endast en användare."
 
@@ -3103,8 +3093,7 @@ msgstr "OPML-import"
 msgid "Please choose an OPML file first."
 msgstr "Välj en OPML-fil först."
 
-#: js/prefs.js:815
-#: plugins/import_export/import_export.js:115
+#: js/prefs.js:815 plugins/import_export/import_export.js:115
 #: plugins/googlereaderimport/init.js:45
 msgid "Importing, please wait..."
 msgstr "Importerar, vänligen vänta..."
@@ -3114,7 +3103,8 @@ msgid "Reset to defaults?"
 msgstr "Ã…terställ till standardvärden?"
 
 #: js/prefs.js:1096
-msgid "Remove category %s? Any nested feeds would be placed into Uncategorized."
+msgid ""
+"Remove category %s? Any nested feeds would be placed into Uncategorized."
 msgstr "Radera kategori %s? Nästlade flöden placeras i Okategoriserat."
 
 #: js/prefs.js:1102
@@ -3178,7 +3168,8 @@ msgid "Settings Profiles"
 msgstr "Inställningsprofiler"
 
 #: js/prefs.js:1425
-msgid "Remove selected profiles? Active and default profiles will not be removed."
+msgid ""
+"Remove selected profiles? Active and default profiles will not be removed."
 msgstr "Radera markerade profiler? Aktiva profiler tas inte bort."
 
 #: js/prefs.js:1428
@@ -3189,13 +3180,11 @@ msgstr "Raderar valda profiler...."
 msgid "No profiles are selected."
 msgstr "Inga profiler valda."
 
-#: js/prefs.js:1451
-#: js/prefs.js:1504
+#: js/prefs.js:1451 js/prefs.js:1504
 msgid "Activate selected profile?"
 msgstr "Aktivera markerad profil?"
 
-#: js/prefs.js:1467
-#: js/prefs.js:1520
+#: js/prefs.js:1467 js/prefs.js:1520
 msgid "Please choose a profile to activate."
 msgstr "Välj en profil att aktivera."
 
@@ -3207,8 +3196,7 @@ msgstr "Skapar profil..."
 msgid "This will invalidate all previously generated feed URLs. Continue?"
 msgstr "Detta tar bort alla tidigare skapade flödes-URLer. Vill du fortsätta?"
 
-#: js/prefs.js:1531
-#: js/prefs.js:1550
+#: js/prefs.js:1531 js/prefs.js:1550
 msgid "Clearing URLs..."
 msgstr "Rensar URLer..."
 
@@ -3224,201 +3212,223 @@ msgstr "Detta tar bort alla tidigare delade artikel-URLer. Fortsätt?"
 msgid "Shared URLs cleared."
 msgstr "Delade URLer rensade."
 
-#: js/prefs.js:1648
+#: js/prefs.js:1663
 msgid "Label Editor"
 msgstr "Etikettseditor"
 
-#: js/prefs.js:1770
+#: js/prefs.js:1785
 msgid "Subscribing to feeds..."
 msgstr "Prenumererar pÃ¥ flöden..."
 
-#: js/prefs.js:1807
+#: js/prefs.js:1822
 msgid "Clear stored data for this plugin?"
 msgstr "Radera lagrad data för detta tillägg?"
 
-#: js/prefs.js:1824
-msgid "Clear all messages in the error log?"
-msgstr ""
-
-#: js/tt-rss.js:127
+#: js/tt-rss.js:126
 msgid "Mark all articles as read?"
 msgstr "Flagga alla artiklar som lästa?"
 
-#: js/tt-rss.js:133
+#: js/tt-rss.js:132
 msgid "Marking all feeds as read..."
 msgstr "Markerar alla flöden som lästa..."
 
-#: js/tt-rss.js:381
+#: js/tt-rss.js:380
 msgid "Please enable mail plugin first."
 msgstr "Aktivera e-post-tillägget först."
 
-#: js/tt-rss.js:493
+#: js/tt-rss.js:492
 msgid "Please enable embed_original plugin first."
 msgstr "Vänligen aktivera tillägget embed_original först."
 
-#: js/tt-rss.js:645
+#: js/tt-rss.js:618
 msgid "Select item(s) by tags"
 msgstr "Välj artiklar baserat pÃ¥ taggar"
 
-#: js/tt-rss.js:666
+#: js/tt-rss.js:639
 msgid "You can't unsubscribe from the category."
 msgstr "Du kan inte säga upp prenumeration pÃ¥ kategorin."
 
-#: js/tt-rss.js:671
-#: js/tt-rss.js:825
+#: js/tt-rss.js:644 js/tt-rss.js:798
 msgid "Please select some feed first."
 msgstr "Välj nÃ¥gra flöden först."
 
-#: js/tt-rss.js:820
+#: js/tt-rss.js:793
 msgid "You can't rescore this kind of feed."
 msgstr "Den här typen av flöden kan inte poängsättas."
 
-#: js/tt-rss.js:830
+#: js/tt-rss.js:803
 msgid "Rescore articles in %s?"
 msgstr "Beräkna om poängen för artiklarna i %s?"
 
-#: js/tt-rss.js:833
+#: js/tt-rss.js:806
 msgid "Rescoring articles..."
 msgstr "Räknar om artikelpoäng..."
 
-#: js/tt-rss.js:967
+#: js/tt-rss.js:940
 msgid "New version available!"
 msgstr "Ny version tillgänglig!"
 
-#: js/viewfeed.js:105
+#: js/viewfeed.js:102
 msgid "Cancel search"
 msgstr "Avbryt sökning"
 
-#: js/viewfeed.js:454
+#: js/viewfeed.js:453 plugins/digest/digest.js:258
+#: plugins/digest/digest.js:714
 msgid "Unstar article"
 msgstr "Ta bort stjärnmarkering frÃ¥n artikeln"
 
-#: js/viewfeed.js:458
+#: js/viewfeed.js:457 plugins/digest/digest.js:260
+#: plugins/digest/digest.js:718
 msgid "Star article"
 msgstr "Stjärnmärk artikel"
 
-#: js/viewfeed.js:498
+#: js/viewfeed.js:497 plugins/digest/digest.js:263
+#: plugins/digest/digest.js:749
 msgid "Unpublish article"
 msgstr "Avpublicera artikeln"
 
-#: js/viewfeed.js:502
+#: js/viewfeed.js:501 plugins/digest/digest.js:265
+#: plugins/digest/digest.js:754
 msgid "Publish article"
 msgstr "Publicera artikel"
 
-#: js/viewfeed.js:654
+#: js/viewfeed.js:653
 msgid "%d article selected"
 msgid_plural "%d articles selected"
 msgstr[0] "%d artikel vald"
 msgstr[1] "%d artiklar valda"
 
-#: js/viewfeed.js:726
-#: js/viewfeed.js:754
-#: js/viewfeed.js:781
-#: js/viewfeed.js:844
-#: js/viewfeed.js:878
-#: js/viewfeed.js:998
-#: js/viewfeed.js:1041
-#: js/viewfeed.js:1094
-#: js/viewfeed.js:2071
-#: plugins/mailto/init.js:7
+#: js/viewfeed.js:725 js/viewfeed.js:753 js/viewfeed.js:780 js/viewfeed.js:843
+#: js/viewfeed.js:877 js/viewfeed.js:997 js/viewfeed.js:1040
+#: js/viewfeed.js:1093 js/viewfeed.js:2091 plugins/mailto/init.js:7
 #: plugins/mail/mail.js:7
 msgid "No articles are selected."
 msgstr "Inga artiklar valda."
 
-#: js/viewfeed.js:1006
+#: js/viewfeed.js:1005
 msgid "Delete %d selected article in %s?"
 msgid_plural "Delete %d selected articles in %s?"
 msgstr[0] "Radera %d vald artikel i %s?"
 msgstr[1] "Radera %d valda artiklar i %s?"
 
-#: js/viewfeed.js:1008
+#: js/viewfeed.js:1007
 msgid "Delete %d selected article?"
 msgid_plural "Delete %d selected articles?"
 msgstr[0] "Radera %d vald artikel?"
 msgstr[1] "Radera %d valda artiklar?"
 
-#: js/viewfeed.js:1050
+#: js/viewfeed.js:1049
 msgid "Archive %d selected article in %s?"
 msgid_plural "Archive %d selected articles in %s?"
 msgstr[0] "Arkivera %d vald artikel i %s?"
 msgstr[1] "Arkivera %d valda artiklar i %s?"
 
-#: js/viewfeed.js:1053
+#: js/viewfeed.js:1052
 msgid "Move %d archived article back?"
 msgid_plural "Move %d archived articles back?"
 msgstr[0] "Flytta tillbaka %d arkiverad artikel?"
 msgstr[1] "Flytta tillbaka %d arkiverade artiklar?"
 
-#: js/viewfeed.js:1055
-msgid "Please note that unstarred articles might get purged on next feed update."
-msgstr "Vänligen notera att icke stjärnmärkta artiklar kanske rensas vid nästa flödesuppdatering."
+#: js/viewfeed.js:1054
+msgid ""
+"Please note that unstarred articles might get purged on next feed update."
+msgstr ""
+"Vänligen notera att icke stjärnmärkta artiklar kanske rensas vid nästa "
+"flödesuppdatering."
 
-#: js/viewfeed.js:1100
+#: js/viewfeed.js:1099
 msgid "Mark %d selected article in %s as read?"
 msgid_plural "Mark %d selected articles in %s as read?"
 msgstr[0] "Markera %d vald artikel i %s som läst?"
 msgstr[1] "Markera %d valda artiklar i %s som läst?"
 
-#: js/viewfeed.js:1124
+#: js/viewfeed.js:1123
 msgid "Edit article Tags"
 msgstr "Redigera artikeltaggar"
 
-#: js/viewfeed.js:1130
+#: js/viewfeed.js:1129
 msgid "Saving article tags..."
 msgstr "Sparar artikeltaggar..."
 
-#: js/viewfeed.js:1336
+#: js/viewfeed.js:1335
 msgid "No article is selected."
 msgstr "Ingen artikel vald."
 
-#: js/viewfeed.js:1371
+#: js/viewfeed.js:1370
 msgid "No articles found to mark"
 msgstr "Hittade inga artiklar att flagga"
 
-#: js/viewfeed.js:1373
+#: js/viewfeed.js:1372
 msgid "Mark %d article as read?"
 msgid_plural "Mark %d articles as read?"
 msgstr[0] "Markera %d artikel som läst?"
 msgstr[1] "Markera %d artiklar som lästa?"
 
-#: js/viewfeed.js:1875
+#: js/viewfeed.js:1895
 msgid "Open original article"
 msgstr "Öppna orginalartikeln"
 
-#: js/viewfeed.js:1881
+#: js/viewfeed.js:1901
 msgid "Display article URL"
 msgstr "Visa artikel-URL"
 
-#: js/viewfeed.js:1900
+#: js/viewfeed.js:1920
 msgid "Toggle marked"
 msgstr "Växla markerade"
 
-#: js/viewfeed.js:1981
+#: js/viewfeed.js:2001
 msgid "Assign label"
 msgstr "Ange etikett"
 
-#: js/viewfeed.js:1986
+#: js/viewfeed.js:2006
 msgid "Remove label"
 msgstr "Ta bort etikett"
 
-#: js/viewfeed.js:2040
+#: js/viewfeed.js:2060
 msgid "Please enter new score for selected articles:"
 msgstr "Ange ny poäng för markerade artiklar:"
 
-#: js/viewfeed.js:2082
+#: js/viewfeed.js:2102
 msgid "Please enter new score for this article:"
 msgstr "Ange ny poäng för denna artikel:"
 
-#: js/viewfeed.js:2115
+#: js/viewfeed.js:2135
 msgid "Article URL:"
 msgstr "URL för artikel:"
 
+#: plugins/digest/digest.js:72
+msgid "Mark %d displayed article as read?"
+msgid_plural "Mark %d displayed articles as read?"
+msgstr[0] "Markera %d visad artikel som läst?"
+msgstr[1] "Markera %d visade artiklar som lästa?"
+
+#: plugins/digest/digest.js:290
+msgid "Error: unable to load article."
+msgstr "Fel: kunde inte ladda artikel."
+
+#: plugins/digest/digest.js:464
+msgid "Click to expand article."
+msgstr "Klicka för att expandera artikeln."
+
+#: plugins/digest/digest.js:535
+msgid "%d more..."
+msgid_plural "%d more..."
+msgstr[0] "%d mer..."
+msgstr[1] "%d mer..."
+
+#: plugins/digest/digest.js:542
+msgid "No unread feeds."
+msgstr "Inga olästa flöden."
+
+#: plugins/digest/digest.js:649
+msgid "Load more..."
+msgstr "Ladda mer..."
+
 #: plugins/embed_original/init.js:6
 msgid "Sorry, your browser does not support sandboxed iframes."
 msgstr "Din webbläsare stöder inte sandboxade iframes"
 
-#: plugins/mailto/init.js:21
-#: plugins/mail/mail.js:21
+#: plugins/mailto/init.js:21 plugins/mail/mail.js:21
 msgid "Forward article by email"
 msgstr "Vidarebefordra artikel via e-post"
 
@@ -3427,10 +3437,18 @@ msgid "Export Data"
 msgstr "Exportera data"
 
 #: plugins/import_export/import_export.js:40
-msgid "Finished, exported %d article. You can download the data <a class='visibleLink' href='%u'>here</a>."
-msgid_plural "Finished, exported %d articles. You can download the data <a class='visibleLink' href='%u'>here</a>."
-msgstr[0] "Klart, %d artikel exporterades. Du kan ladda ner datan <a class='visibleLink' href='%u'>här</a>."
-msgstr[1] "Klart, %d artiklar exporterades. Du kan ladda ner datan <a class='visibleLink' href='%u'>här</a>."
+msgid ""
+"Finished, exported %d article. You can download the data <a "
+"class='visibleLink' href='%u'>here</a>."
+msgid_plural ""
+"Finished, exported %d articles. You can download the data <a "
+"class='visibleLink' href='%u'>here</a>."
+msgstr[0] ""
+"Klart, %d artikel exporterades. Du kan ladda ner datan <a "
+"class='visibleLink' href='%u'>här</a>."
+msgstr[1] ""
+"Klart, %d artiklar exporterades. Du kan ladda ner datan <a "
+"class='visibleLink' href='%u'>här</a>."
 
 #: plugins/import_export/import_export.js:93
 msgid "Data Import"
@@ -3468,8 +3486,7 @@ msgstr "Ta bort markerade instanser?"
 msgid "Removing selected instances..."
 msgstr "Tar bort markerade instanser..."
 
-#: plugins/instances/instances.js:139
-#: plugins/instances/instances.js:151
+#: plugins/instances/instances.js:139 plugins/instances/instances.js:151
 msgid "No instances are selected."
 msgstr "Inga instanser valda."
 
@@ -3482,9 +3499,12 @@ msgid "Share article by URL"
 msgstr "Dela artikel via URL"
 
 #: plugins/updater/updater.js:58
-#, fuzzy
-msgid "Backup your tt-rss directory before continuing. Please type 'yes' to continue."
-msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog innan du fortsätter. Skriv 'yes' för att fortsätta."
+msgid ""
+"Backup your tt-rss directory before continuing. Please type 'yes' to "
+"continue."
+msgstr ""
+"Ta backup pÃ¥ din tt-rss-katalog innan du fortsätter. Skriv 'yes' för att "
+"fortsätta."
 
 #~ msgid "Could not update database"
 #~ msgstr "Kunde inte uppdatera databasen"
@@ -3501,8 +3521,12 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Please backup your database before proceeding."
 #~ msgstr "Ta en backup av din databas innan du forsätter."
 
-#~ msgid "Your Tiny Tiny RSS database needs update to the latest version (<b>%d</b> to <b>%d</b>)."
-#~ msgstr "Din Tiny Tiny RSS-databas behöver uppdateras till den senaste versionen (<b>%d</b> till <b>%d</b>)."
+#~ msgid ""
+#~ "Your Tiny Tiny RSS database needs update to the latest version (<b>%d</b> "
+#~ "to <b>%d</b>)."
+#~ msgstr ""
+#~ "Din Tiny Tiny RSS-databas behöver uppdateras till den senaste versionen "
+#~ "(<b>%d</b> till <b>%d</b>)."
 
 #~ msgid "Performing updates..."
 #~ msgstr "Uppdatering pÃ¥gÃ¥r..."
@@ -3520,9 +3544,13 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgstr "FEL!"
 
 #~ msgid "Finished. Performed <b>%d</b> update up to schema version <b>%d</b>."
-#~ msgid_plural "Finished. Performed <b>%d</b> updates up to schema version <b>%d</b>."
-#~ msgstr[0] "Klart. Genomförde <b>%d</b> uppdatering upp till schemaversion <b>%d</b>."
-#~ msgstr[1] "Klart. Genomförde <b>%d</b> uppdateringar upp till schemaversion <b>%d</b>."
+#~ msgid_plural ""
+#~ "Finished. Performed <b>%d</b> updates up to schema version <b>%d</b>."
+#~ msgstr[0] ""
+#~ "Klart. Genomförde <b>%d</b> uppdatering upp till schemaversion <b>%d</b>."
+#~ msgstr[1] ""
+#~ "Klart. Genomförde <b>%d</b> uppdateringar upp till schemaversion <b>%d</"
+#~ "b>."
 
 #~ msgid "Your database schema is from a newer version of Tiny Tiny RSS."
 #~ msgstr "Ditt databasschema Ã¤r för en nyare Tiny Tiny RSS Version."
@@ -3530,8 +3558,12 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Found schema version: <b>%d</b>, required: <b>%d</b>."
 #~ msgstr "Fann schemaversion: <b>%d</b>, behöver version: <b>%d</b>."
 
-#~ msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue."
-#~ msgstr "Kan inte uppdatera schema. Uppdatera Tiny Tiny RSS pÃ¥ filsystemet till en ny version "
+#~ msgid ""
+#~ "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer "
+#~ "version and continue."
+#~ msgstr ""
+#~ "Kan inte uppdatera schema. Uppdatera Tiny Tiny RSS pÃ¥ filsystemet till en "
+#~ "ny version "
 
 #~ msgid "Switch to digest..."
 #~ msgstr "Byt läge till sammanfattning..."
@@ -3560,71 +3592,12 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "I have scanned the code and would like to enable OTP"
 #~ msgstr "Jag har läst av bilden och vill aktivera OTP"
 
-#~ msgid "(Un)hide empty categories"
-#~ msgstr "Visa/dölj tomma kategorier"
-
-#~ msgid "Published articles and generated feeds"
-#~ msgstr "Publicerade artiklar och genererade flöden"
-
-#~ msgid "Articles shared by URL"
-#~ msgstr "Artiklar delade per URL"
-
-#~ msgid "These feeds have not been updated because of errors:"
-#~ msgstr "Följande flöden har inte blivit uppdaterade pga fel:"
-
-#~ msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings."
-#~ msgstr "Din webbläsare stöder inte Javascript som krävs för att denna applikation ska fungera som den ska. Kontrollera dina webbläsarinställningar."
-
-#~ msgid "Hello,"
-#~ msgstr "Hej,"
-
-#~ msgid "Regular version"
-#~ msgstr "Standardversion"
-
-#~ msgid "Home"
-#~ msgstr "Hem"
-
-#~ msgid "Nothing found (click to reload feed)."
-#~ msgstr "Inget kunde hittas (klicka för att ladda om flöde)"
-
-#~ msgid "Open regular version"
-#~ msgstr "Öppna normal version"
-
-#~ msgid "Enable categories"
-#~ msgstr "Aktivera kategorier"
-
-#~ msgid "ON"
-#~ msgstr "PÃ…"
-
-#~ msgid "OFF"
-#~ msgstr "AV"
-
-#~ msgid "Browse categories like folders"
-#~ msgstr "Bläddra i kategorier som i mappar"
-
-#~ msgid "Show images in posts"
-#~ msgstr "Visa bilder i artiklar"
-
-#~ msgid "Hide read articles and feeds"
-#~ msgstr "Dölj lästa artiklar och flöden"
-
-#~ msgid "Sort feeds by unread count"
-#~ msgstr "Sortera flöden efter antal olästa artiklar"
-
-#~ msgid "Article archive"
-#~ msgstr "Artikelarkiv"
-
-#~ msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)"
-#~ msgstr "Filen kunde inte laddas upp. Kontrollera upload_max_filesize i PHP.ini (nuvarande inställning = %s)"
-
-#~ msgid "Example Pane"
-#~ msgstr "Exempelpanel"
-
-#~ msgid "Sample value"
-#~ msgstr "Exempelvärde"
-
-#~ msgid "Set value"
-#~ msgstr "Ange värde"
+#~ msgid ""
+#~ "Could not upload file. You might need to adjust upload_max_filesize in "
+#~ "PHP.ini (current value = %s)"
+#~ msgstr ""
+#~ "Filen kunde inte laddas upp. Kontrollera upload_max_filesize i PHP.ini "
+#~ "(nuvarande inställning = %s)"
 
 #~ msgid "close"
 #~ msgstr "stäng"
@@ -3635,28 +3608,6 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Click to pause"
 #~ msgstr "Klicka för att pausa"
 
-#~ msgid "Mark %d displayed article as read?"
-#~ msgid_plural "Mark %d displayed articles as read?"
-#~ msgstr[0] "Markera %d visad artikel som läst?"
-#~ msgstr[1] "Markera %d visade artiklar som lästa?"
-
-#~ msgid "Error: unable to load article."
-#~ msgstr "Fel: kunde inte ladda artikel."
-
-#~ msgid "Click to expand article."
-#~ msgstr "Klicka för att expandera artikeln."
-
-#~ msgid "%d more..."
-#~ msgid_plural "%d more..."
-#~ msgstr[0] "%d mer..."
-#~ msgstr[1] "%d mer..."
-
-#~ msgid "No unread feeds."
-#~ msgstr "Inga olästa flöden."
-
-#~ msgid "Load more..."
-#~ msgstr "Ladda mer..."
-
 #~ msgid "Updated"
 #~ msgstr "Uppdaterade"
 
@@ -3690,10 +3641,18 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Modify score"
 #~ msgstr "Redigera poäng"
 
-#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once."
-#~ msgstr "Detta Ã¤r användbart när du läser flera sammanslagna kanaler som har delvis samma användarbas. När inaktiverad sÃ¥ visas samma artikel frÃ¥n flera olika kanaler endast en gÃ¥ng."
-
-#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds"
+#~ msgid ""
+#~ "This option is useful when you are reading several planet-type "
+#~ "aggregators with partially colliding userbase. When disabled, it forces "
+#~ "same posts from different feeds to appear only once."
+#~ msgstr ""
+#~ "Detta Ã¤r användbart när du läser flera sammanslagna kanaler som har "
+#~ "delvis samma användarbas. När inaktiverad sÃ¥ visas samma artikel frÃ¥n "
+#~ "flera olika kanaler endast en gÃ¥ng."
+
+#~ msgid ""
+#~ "When this option is enabled, headlines in Special feeds and Labels are "
+#~ "grouped by feeds"
 #~ msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler"
 
 #~ msgid "Enable external API"
@@ -3759,8 +3718,11 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Date syntax is incorrect."
 #~ msgstr "Datumsyntaxen Ã¤r felaktig."
 
-#~ msgid "This will clear your stored authentication information for Twitter. Continue?"
-#~ msgstr "Detta raderar din lagrade inloggningsinformation till Twitter. Fortsätt?"
+#~ msgid ""
+#~ "This will clear your stored authentication information for Twitter. "
+#~ "Continue?"
+#~ msgstr ""
+#~ "Detta raderar din lagrade inloggningsinformation till Twitter. Fortsätt?"
 
 #~ msgid "Mark all visible articles in %s as read?"
 #~ msgstr "Flagga alla artiklar i %s som lästa?"
@@ -3847,8 +3809,12 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Focus search (if present)"
 #~ msgstr "Fokusera sökning (om vald)"
 
-#~ msgid "<b>Note:</b> not all actions may be available, depending on Tiny Tiny RSS configuration and your access level."
-#~ msgstr "<b>OBS:</b> Beroende pÃ¥ konfiguration och behörigheter sÃ¥ kanske inte alla alternativ Ã¤r tillgängliga."
+#~ msgid ""
+#~ "<b>Note:</b> not all actions may be available, depending on Tiny Tiny RSS "
+#~ "configuration and your access level."
+#~ msgstr ""
+#~ "<b>OBS:</b> Beroende pÃ¥ konfiguration och behörigheter sÃ¥ kanske inte "
+#~ "alla alternativ Ã¤r tillgängliga."
 
 #~ msgid "Open article in new tab"
 #~ msgstr "Öppna artikel i ny flik"
@@ -3923,7 +3889,8 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgstr "Registera hos Twitter"
 
 #~ msgid "Could not connect to Twitter. Refresh the page or try again later."
-#~ msgstr "Kunde inte ansluta till Twitter. Ladda om sidan eller försök igen senare."
+#~ msgstr ""
+#~ "Kunde inte ansluta till Twitter. Ladda om sidan eller försök igen senare."
 
 #~ msgid "Congratulations! You have successfully registered with Twitter."
 #~ msgstr "Grattis! Du Ã¤r nu registrerad med Twitter."
@@ -3955,11 +3922,19 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Twitter"
 #~ msgstr "Twitter"
 
-#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com."
-#~ msgstr "Innan du kan uppdatera dina Twitterkanaler mÃ¥ste du registrera denna instans av Tiny Tiny RSS hos Twitter."
+#~ msgid ""
+#~ "Before you can update your Twitter feeds, you must register this instance "
+#~ "of Tiny Tiny RSS with Twitter.com."
+#~ msgstr ""
+#~ "Innan du kan uppdatera dina Twitterkanaler mÃ¥ste du registrera denna "
+#~ "instans av Tiny Tiny RSS hos Twitter."
 
-#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds."
-#~ msgstr "Du Ã¤r registerad hos Twitter och ska nu ha Ã¥tkomst till dina Twitterkanaler "
+#~ msgid ""
+#~ "You have been successfully registered with Twitter.com and should be able "
+#~ "to access your Twitter feeds."
+#~ msgstr ""
+#~ "Du Ã¤r registerad hos Twitter och ska nu ha Ã¥tkomst till dina "
+#~ "Twitterkanaler "
 
 #~ msgid "Register with Twitter.com"
 #~ msgstr "Registrera hos Twitter"
@@ -3979,5 +3954,9 @@ msgstr "Live-uppdatering anses experimentell. Ta backup pÃ¥ din tt-rss-katalog i
 #~ msgid "Filter Test Results"
 #~ msgstr "Filtertestresultat"
 
-#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles."
-#~ msgstr "Växla automatiskt till nästa kanal när du klickar pÃ¥ \"Markera alla som lästa\"i verktygsraden."
+#~ msgid ""
+#~ "When \"Mark as read\" button is clicked in toolbar, automatically open "
+#~ "next feed with unread articles."
+#~ msgstr ""
+#~ "Växla automatiskt till nästa kanal när du klickar pÃ¥ \"Markera alla som "
+#~ "lästa\"i verktygsraden."
index 87c8555c082c9851af8ed8cfb7812e6a9359ff95..3c38ab8bf8e754e9251cb99e9a2b8ef088574460 100644 (file)
@@ -51,7 +51,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
                                                        $return = urlencode($_REQUEST["return"]);
                                                        ?><html>
                                                                <head><title>Tiny Tiny RSS</title></head>
-                                                               <?php stylesheet_tag("utility.css") ?>
+                                                               <?php stylesheet_tag("css/utility.css") ?>
                                                        <body class="otp"><div class="content">
                                                        <form action="public.php?return=<?php echo $return ?>"
                                                                        method="POST" class="otpform">
index c8e7d7a3839d0ef218f13e3c473e61037ff45a2a..a8b7069db9b1f7c6cf4b6d18513a971d8e2598d9 100644 (file)
@@ -23,6 +23,9 @@ class GoogleReaderKeys extends Plugin {
                $hotkeys["v"]           = "open_in_new_window";
                $hotkeys["r"]           = "feed_refresh";
                $hotkeys["m"]           = "toggle_unread";
+               $hotkeys["o"]           = "toggle_expand";
+               $hotkeys["(13)|enter"]  = "toggle_expand";
+               $hotkeys["*(191)|?"]    = "help_dialog";
                $hotkeys["(32)|space"]  = "next_article";
                $hotkeys["(38)|up"]     = "article_scroll_up";
                $hotkeys["(40)|down"]   = "article_scroll_down";
diff --git a/prefs.css b/prefs.css
deleted file mode 100644 (file)
index 8720326..0000000
--- a/prefs.css
+++ /dev/null
@@ -1,125 +0,0 @@
-#header a:hover {
-       color : black;
-}
-
-#header img {
-       vertical-align : middle;
-       cursor : pointer;
-}
-
-
-div#pref-tabs .dijitContentPane {
-       font-size : 13px;
-}
-
-div#pref-tabs {
-       margin : 0px 5px 0px 5px;
-}
-
-div#pref-tabs .dijitContentPane h3 {
-       font-size : 14px;
-       font-weight : bold;
-}
-
-#pref-filter-wrap, #pref-filter-header, #pref-filter-content, 
-#pref-label-wrap, #pref-label-header, #pref-label-content,
-#pref-user-wrap, #pref-user-header, #pref-user-content, 
-#pref-instance-wrap, #pref-instance-header, #pref-instance-content {
-       margin : 0px;
-       padding : 0px;
-       border-width : 0px;
-}
-
-#userConfigTab, #labelConfigTab, #filterConfigTab, #pref-feeds-feeds, #instanceConfigTab { 
-       padding : 0px;
-}
-
-/* preferences */
-
-table.prefPrefsList h3 {
-       margin-top : 0.5em;
-       margin-bottom : 0px;
-}
-
-tr.title td {
-       border-width : 0px 0px 1px 0px;
-       border-color : #ecf4ff;
-       border-style : solid;
-       color : #4684ff;
-}
-
-div.prefProfileHolder, div.prefFeedOPMLHolder, div.inactiveFeedHolder {
-       height : 300px;
-       overflow : auto;
-       border-width : 0px 1px 1px 1px;
-       border-color : #c0c0c0;
-       border-style : solid;
-       margin : 0px 0px 5px 0px;
-       background-color : #ecf4ff;
-}
-div.filterTestHolder, div.prefFeedOPMLHolder {
-       border-width : 1px;
-}
-
-ul.selfUpdateList {
-       height : 200px;
-       overflow : auto;
-       list-style-type : none;
-       border : 1px solid #c0c0c0;
-       background-color : #ecf4ff;
-       margin : 0px 0px 5px 0px;
-       padding : 5px;
-}
-
-div#feedlistLoading, div#filterlistLoading, div#labellistLoading {
-       text-align : center;
-       padding : 5px;
-       color : #555;
-}
-
-div#feedlistLoading img, div#filterlistLoading img, div#labellistLoading {
-       margin-right : 5px;
-}
-
-#errorButton {
-       color : red;
-}
-
-a.bookmarklet {
-       color : #4684ff;
-       border : 1px solid #ecf4ff;
-       padding : 2px;
-}
-
-table.prefPluginsList td label, table.prefUserList td {
-       cursor : pointer;
-}
-
-ul.userFeedList {
-       height : 300px;
-       overflow : auto;
-       list-style-type : none;
-       border : 1px solid #555;
-       background-color : white;
-       margin : 0px 0px 5px 0px;
-       padding : 0px;
-}
-
-table.prefErrorLog tr.errrow td {
-       font-size : 10px;
-}
-
-table.prefErrorLog tr.errrow td.errno {
-       font-style : italic;
-       font-weight : bold;
-       white-space : nowrap;
-}
-
-table.prefErrorLog td.filename, table.prefErrorLog td.login, table.prefErrorLog td.timestamp {
-       color : #555;
-}
-
-.dijitAccordionContainer-child {
-       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.2);
-}
-
index 93b7cbb7899ef22eb60c356bc971fc4b2cf5fa8a..fcf21cf2e8a71169f2ae345d708716ee8be7a458 100644 (file)
--- a/prefs.php
+++ b/prefs.php
        <title>Tiny Tiny RSS : <?php echo __("Preferences") ?></title>
 
        <?php stylesheet_tag("lib/dijit/themes/claro/claro.css"); ?>
-       <?php stylesheet_tag("tt-rss.css"); ?>
-       <?php stylesheet_tag("prefs.css"); ?>
+       <?php stylesheet_tag("css/layout.css"); ?>
 
        <?php if ($_SESSION["uid"]) {
                $theme = get_pref( "USER_CSS_THEME", $_SESSION["uid"], false);
-               if ($theme) {
+               if ($theme && file_exists("themes/$theme")) {
                        stylesheet_tag("themes/$theme");
+               } else {
+                       stylesheet_tag("themes/default.css");
                }
        }
        ?>
index 5bc6563b0829c6a449ab243ac4ec22e0d3a2ab3f..eaab98e04ea2fb00000b628863e4399a288d98bc 100644 (file)
@@ -15,6 +15,8 @@
        require_once "config.php";
        require_once "db.php";
 
+       startup_gettext();
+
        $action = $_REQUEST["action"];
 
        if (!init_plugins()) return;
@@ -93,7 +95,7 @@
 <head>
 <title>Create new account</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="utility.css">
+<link rel="stylesheet" type="text/css" href="css/utility.css">
 <script type="text/javascript" src="js/functions.js"></script>
 <script type="text/javascript" src="lib/prototype.js"></script>
 <script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
index aa11970914d3755a19530244af9b309900388442..e8d5f64b941ff18a3f2a2abe3cee15184b088414 100644 (file)
@@ -14,6 +14,7 @@ drop table if exists ttrss_labels;
 drop table if exists ttrss_filters2_actions;
 drop table if exists ttrss_filters2_rules;
 drop table if exists ttrss_filters2;
+drop table if exists ttrss_filters;
 drop table if exists ttrss_filter_types;
 drop table if exists ttrss_filter_actions;
 drop table if exists ttrss_user_prefs;
index 79634678d12c05306edcc8a67c70b34d40716e8b..feb5cece390e0773d1eb2df912e00011600971cd 100644 (file)
@@ -11,6 +11,7 @@ drop table if exists ttrss_labels;
 drop table if exists ttrss_filters2_rules;
 drop table if exists ttrss_filters2_actions;
 drop table if exists ttrss_filters2;
+drop table if exists ttrss_filters;
 drop table if exists ttrss_filter_types;
 drop table if exists ttrss_filter_actions;
 drop table if exists ttrss_user_prefs;
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..83e15257beaadee1d3ee5444bfabbf4cb0e1d3e8 100644 (file)
@@ -0,0 +1,3 @@
+@import "../css/tt-rss.css";
+@import "../css/cdm.css";
+@import "../css/prefs.css";
diff --git a/tt-rss.css b/tt-rss.css
deleted file mode 100644 (file)
index f1459e3..0000000
+++ /dev/null
@@ -1,1103 +0,0 @@
-body#ttrssMain, body#ttrssPrefs, body#ttrssLogin, body {
-       background : white;
-       color : black;
-       margin : 0px;
-       padding : 0px;
-       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-       font-size: 14px;
-}
-
-html, body#ttrssMain, body#ttrssPrefs, #main {
-       width: 100%; 
-       height: 100%;
-       border: 0; 
-       padding: 0; 
-       margin: 0;
-} 
-
-
-body#ttrssPrefs {
-       background-color : #ecf4ff;
-}
-
-body#ttrssPrefs #footer, body#ttrssPrefs #header {
-       background-color : #ecf4ff; 
-       padding-left : 8px;
-       padding-right : 8px;
-}
-
-div.postReply {
-       padding : 0px;
-}
-
-div.postReply div.postHeader {
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #c0c0c0;
-       background : #fafafa;
-       box-shadow : 0px 0px 3px 0px rgba(0,0,0,0.1);
-       padding : 5px;
-       color : #909090;
-}
-
-div.postReply div.postTitle {
-       overflow : hidden;
-       text-overflow: ellipsis;
-       white-space : nowrap;
-}
-
-div.postReply div.postDate {
-       padding-left : 10px;
-}
-
-div.postReply div.postContent {
-       padding : 10px;
-}
-
-div.postReply div.postContent img {
-       border-width : 0px;
-       max-width : 98%;
-       height: auto;
-}
-
-div.postReply div.postEnclosures {
-       margin-top : 1em;
-       color : #555;
-}
-
-div.postReply img.tagsPic {
-       width : 16px;
-       height : 16px;
-       margin-left : 4px;
-       vertical-align : middle;
-}
-
-div.articleNote {
-       background-color : #fff7d5;
-       padding : 5px;
-       border-radius : 4px;
-       margin : 5px;
-       border-style : solid;
-       border-color : #e7d796;
-       border-width : 1px;
-       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
-       background-color : #fff7d5;
-       color : #9a8c59;
-}
-
-div.articleNote div.noteEdit {
-       float : right;
-       cursor : pointer;
-}
-
-div.postReply span.author {
-       font-size : 12px;
-}
-
-h1 {
-       font-size : 18px;
-}
-
-h2 {
-       font-size : 16px;
-       font-weight : bold;
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #ecf4ff;
-}
-
-h3 {
-       font-size : 12px;
-       font-weight : bold;
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #ecf4ff;
-}
-
-hr {
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #c0c0c0;
-       max-width : 90%;
-}
-
-a {
-       color : #4684ff;
-       text-decoration : none;
-}
-
-a:hover {
-       color : #88b0f0;
-}
-
-#piggie {
-       z-index : 999;
-       position : absolute;
-}
-
-#notify {
-       bottom : 10px;
-       right : 10px;
-       border-width : 1px;
-       border-style : solid;
-       position : absolute;    
-       font-size : 12px;
-       z-index : 99;
-       max-width : 200px;
-       min-width : 100px;
-       padding : 5px;
-       -width : 200px;
-       box-shadow : 0px 0px 2px rgba(0,0,0,0.2);
-}
-
-#notify img {
-       vertical-align : middle;
-       max-height : 14px;
-}
-
-#notify span.msg {
-       width : 100%;
-}
-
-#notify span.close {
-       text-align : right;
-}
-
-#notify span {
-       display : table-cell;
-       vertical-align : middle;
-       padding : 4px;
-}
-
-.notify {
-       border-color : #d7c47a;
-       background-color : #fff7d5;
-}
-
-.notify.progress {
-       border-color : #d7c47a;
-       background-color : #fff7d5;
-}
-
-.notify.info {
-       border-color : #88b0f0;
-       background-color : #ecf4ff;
-}
-
-.notify.error {
-       background-color : #ffcccc;
-       border-color : #ff0000;
-}
-
-.hl div.hlTitle a {
-       font-weight : bold;
-       color : #555;
-}
-
-.hl.Unread div.hlTitle a {
-       color : black;
-}
-
-.hl.active {
-       box-shadow : inset 0px 0px 3px 0px rgba(0,0,0,0.1);
-}
-
-.hl.active div.hlTitle a {
-       color : #4684ff;
-}
-
-.hl.Grayed {
-       color : #909090;
-}
-
-#headlines-frame div.hl:nth-child(even) {
-       background : #fafafa;
-}
-
-#headlines-frame.normal {
-
-}
-
-.hl {
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #c0c0c0;
-}
-
-.hl.active {
-       background : #ecf4ff ! important;
-}
-
-div.filterTestHolder {
-       height : 300px;
-       overflow : auto;
-       border-color : #c0c0c0;
-       border-style : solid;
-       margin : 0px 0px 5px 0px;
-       background-color : #ecf4ff;
-       border-width : 1px 1px 1px 1px;
-}
-
-
-#content-insert blockquote, #headlines-frame blockquote, .dijitContentPane blockquote {
-       margin : 5px 0px 5px 0px;
-       color : #555;
-       padding-left : 10px;
-       border-width : 0px 0px 0px 4px;
-       border-color : #c0c0c0;
-       border-style : solid;
-}
-
-#content-insert code, #headlines-frame code, .dijitContentPane code {
-       color : #009900;
-       font-family : monospace;
-       font-size : 12px;
-}
-
-#content-insert pre, #headlines-frame pre, .dijitContentPane pre {
-       margin : 5px 0px 5px 0px;
-       padding : 10px;
-       color : #555;
-       font-family : monospace;
-       font-size : 12px;
-       border-width : 0px;
-       border-color : #c0c0c0;
-       border-style : solid;
-       background : #fafafa;
-       display : block;
-       max-width : 98%;
-       overflow : auto;
-}
-
-div.notice, div.warning, div.error {
-       padding : 4px 10px 4px 4px;
-       display : inline-block;
-       margin : 2px 0px 4px 0px;
-       font-size : 12px;
-       border-style : solid;
-       border-color : #ccc;
-       border-radius : 4px;
-       border-width : 1px;
-       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
-}
-
-div.notice div.inner, div.warning div.inner, div.error div.inner {
-       vertical-align : middle;
-}
-
-div.notice {
-       background : #ecf4ff;
-       border-color : #88b0f0;
-}
-
-div.warning {
-       background : #fff7d5;
-       border-color : #e7d796;;
-}
-
-div.error {
-       background : #ffcccc;
-       border-color : #ff0000;
-}
-
-div.warning img, div.notice img, div.error img {
-       margin-right : 4px;
-       vertical-align : middle;
-}
-
-div.warning span, div.notice span, div.error span {
-       display : table-cell;
-       vertical-align : middle;
-
-}
-
-ul.nomarks {
-       list-style-type : none;
-       margin : 0px;
-       padding : 10px; 
-}
-
-div.prefHelp {
-       color : #555;
-       padding : 5px;
-}
-
-span.feed_error {
-       color : red;
-}
-
-.insensitive {
-       color : #555;
-}
-
-div#headlines-toolbar {
-       border-width : 0px 0px 1px 0px;
-       background-color : #fcfcfc;
-       border-color : #c0c0c0;
-       font-size : 12px;
-       font-family : "Segoe UI", Tahoma, sans-serif;
-       color : #555;
-       padding : 0px;
-       margin : 0px;
-       overflow : hidden;
-       height : 25px;
-       line-height : 25px;
-       padding-left : 4px;
-}
-
-div#headlines-toolbar .dijitSelect {
-       font-size : 11px;
-       position : relative;
-       top : -2px;
-}
-
-div#headlines-toolbar span.r {
-       float: right;
-   position: relative;
-       padding : 0 4px 0px 4px;
-       text-align : right;
-}      
-
-div#headlines-toolbar span.r span.error {
-       color : red;
-} 
-
-div#headlines-toolbar span.r a {
-       color : #555;
-}
-
-span.contentPreview {
-       color : #555;
-       font-weight : normal;
-}
-
-span.contentPreview:hover {
-       color : #4684ff;
-}
-
-span.hlLabelRef {
-       background-color : #fff7d5;     
-       font-size : 8px;
-       color : #063064;
-       font-weight : normal;
-       margin-left : 2px;
-       padding : 1px 4px 1px 4px;
-       display : inline-block;
-       vertical-align : middle;
-       white-space: nowrap;
-       border-radius : 4px;
-}
-
-div.postHeader div.postDate {
-       text-align : right;
-       color : #555;
-       float : right;
-}
-
-div.postHeader div {
-       padding-bottom : 3px;
-}
-
-#feedUpdateErrors {
-       display : none;
-}
-
-#allEntryTags {
-       border-width : 0px 0px 1px 0px;
-       border-style : solid;
-       border-color : #c0c0c0;
-       padding-bottom : 5px;
-       display : none;
-}
-
-a.hlFeed {
-       display : block;
-       white-space : nowrap;
-       font-size : 9px;
-       font-style : italic;
-       font-weight : normal;
-       border-radius : 4px;
-       display : inline-block;
-       padding : 1px 2px 1px 2px;
-       margin-bottom : 2px;
-       margin-top : 2px;
-       color : #555;
-}
-
-a.hlFeed:hover {
-       color : #4684ff;
-}
-
-img.markedPic, img.pubPic {
-       cursor : pointer;
-       vertical-align : middle;
-}
-
-div.tagCloudContainer {
-       border : 1px solid #c0c0c0;
-       background-color : #ecf4ff;
-       margin : 5px 0px 5px 0px;
-       padding : 5px;
-       text-align : center;
-}
-
-div.errorExplained {
-       border : 1px solid #c0c0c0;
-       background-color : #ecf4ff;
-       margin : 5px 0px 5px 0px;
-       padding : 5px;
-}
-
-ul.feedErrorsList {
-       max-height : 300px;
-       overflow : auto;
-       list-style-type : none;
-       border : 1px solid #c0c0c0;
-       background-color : #ecf4ff;
-       margin : 0px 0px 5px 0px;
-       padding : 5px;
-}
-
-ul.feedErrorsList em {
-       color : #555;
-}
-
-ul.browseFeedList {
-       height : 300px;
-       overflow : auto;
-       border-width : 0px 1px 1px 1px;
-       border-color : #c0c0c0;
-       border-style : solid;
-       margin : 0px 0px 5px 0px;
-       background-color : white;
-       list-style-type : none;
-       padding : 0px;
-
-}
-
-ul.browseFeedList li {
-       margin : 0px;
-       padding : 2px 4px 2px 4px;
-}
-
-span.subscribers {
-       color : #808080;
-}
-
-div.subscribers {
-       color : #808080;
-       font-size : 12px;
-       float : right;
-}
-
-div.browserDetails {
-       margin : 5px 5px 5px 5px;
-       padding : 5px;
-}
-
-ul.compact {
-       list-style-type : none;
-       margin : 0px;
-       padding : 0px;
-}
-
-ul.compact li {
-       margin : 0px;
-       padding : 0px;
-}
-
-.noborder {
-       border-width : 0px;
-}
-
-#overlay {
-       background : white;
-       left : 0;
-       top : 0;
-       height : 100%;
-       width : 100%;
-       z-index : 100;
-       position : absolute;
-}
-
-#overlay_inner {
-       font-weight : bold;
-       margin : 1em;
-}
-
-form {
-       margin : 0px;
-       padding : 0px;
-}
-
-#main_toolbar_form {
-       margin : 0px;
-       padding : 0px;
-       display : table-cell;
-       white-space : nowrap;
-       width : 100%;
-}
-
-div.loadingPrompt {
-       padding : 1em;
-       text-align : center;
-       font-weight : bold;
-}
-
-div.whiteBox {
-       margin-left : 1px;
-       text-align : center;
-       padding : 1em;
-}
-
-/* html, body#ttrssMain, #main {
-       width: 100%; 
-       height: 100%;
-       padding: 0; 
-       margin: 0;
-} */
-
-#toolbar div.actionChooser {
-       display : table-cell;
-       text-align : right;
-       padding-right : 3px;
-}
-
-div.autocomplete {
-       position : absolute;
-       width : 250px;
-       background-color : white;
-       border :1px solid #778899;
-       margin : 0px;
-       padding : 0px;
-}
-
-div.autocomplete ul {
-       list-style-type : none;
-       margin : 0px;
-       padding : 0px;
-}
-
-div.autocomplete ul li.selected { 
-       background-color : #fff7d5;
-}
-
-div.autocomplete ul li {
-       list-style-type : none;
-       display : block;
-       margin : 0;
-       padding : 2px;
-       height : 32px;
-       cursor : pointer;
-}
-
-.hlContentH a, .hlContentH span {
-       color : #00cc00;
-}
-
-.hlContentL a, .hlContentL span {
-       color : #909090;
-       text-decoration : line-through;
-}
-
-span.titleWrapH, span.titleWrapH a {
-       color : #00cc00;
-}
-
-span.titleWrapL, span.titleWrapL a {
-       color : #909090;
-       text-decoration : line-through;
-}
-
-img.hlScorePic {
-       vertical-align : middle;
-       width : 16px;
-       height : 16px;
-}
-
-div.dlgSec {
-       font-size : 12px;
-       color : #555;
-       font-weight : bold;
-       clear : both;
-       height : 20px;
-}
-
-div.dlgSecCont {
-       position : relative;
-       left : 150px;
-       top : -20px;
-       float : left;
-       font-size : 12px;
-       font-weight : normal;
-}
-
-div.dlgSecCont hr {
-       height : 0px;
-       line-height : 0px;
-       border : 0px solid transparent;
-       margin : 2px;
-}
-
-div.dlgSecCont > * {
-       position : relative;
-       top : -2px;
-}
-
-div.dlgButtons {
-       text-align : right;
-       clear : both;
-}
-
-span.labelColorIndicator {
-       height : 14px;
-       width : 14px;
-       line-height : 14px;
-       font-size : 9px;
-       display : inline-block;
-       border : 1px solid black;
-       background-color : #fff7d5;     
-       color : #063064;
-       text-align : center;
-       margin-right : 2px;
-}
-
-span.labelColorIndicator2 {
-       height : 14px;
-       width : 14px;
-       font-size : 9px;
-       display : inline-block;
-       border : 1px solid black;
-       background-color : #fff7d5;     
-       color : #063064;
-       text-align : center;
-       margin-right : 2px;
-       vertical-align : bottom;
-}
-
-div#cmdline {
-       position : absolute;
-       left : 5px;
-       bottom : 5px;
-       font-size : 11px;
-       color : #555;
-       font-weight : bold;
-       background-color : white;
-       border : 1px solid #88b0f0;
-       padding : 3px 5px 3px 5px;
-       z-index : 5;
-}
-
-#feed_browser_spinner {
-       vertical-align : middle;
-       height : 18px;
-       width : 18px;
-}
-
-div.hlTitle {
-       display : table-cell;
-       cursor : pointer;
-       width : 100%;
-       vertical-align : middle;
-       padding-top : 4px;
-       padding-bottom : 4px;
-}
-
-div.hlLeft {
-       display : table-cell;
-       vertical-align : middle;
-       white-space: nowrap;
-}
-
-div.hlRight {
-       display : table-cell;
-       white-space: nowrap;
-       text-align : right;
-       vertical-align : middle;
-}
-
-div.hlRight img {
-       max-width : 16px;
-       max-height : 16px;
-}
-
-span.hlUpdated {
-       color : #555;
-       min-width : 100px;
-       display : table-cell;
-       width : 100%;
-       vertical-align : middle;
-       text-align : right;
-       font-size : 10px;
-}
-
-div.hlLeft {
-       padding-left : 8px;
-}
-
-div.hlLeft input {
-       margin-left : 4px;
-       margin-right : 4px;
-}
-
-div.hlLeft img, div.hlRight img {
-       margin : 0px 4px 0px 4px;
-}
-
-div.hlLeft img {
-       width : 16px;
-       height : 16px;
-}
-
-div.fatalError {
-       margin-bottom : 10px;
-}
-
-div.fatalError button {
-       margin-top : 5px;
-}
-
-div.fatalError textarea {
-       width : 100%;
-       height : 100px;
-}
-
-#ttrssMain #main {
-       border-width : 0px;
-       margin : 0px;
-       padding : 0px;
-}
-
-#header-wrap {
-       border-width : 0px;
-       margin : 0px;
-       padding : 0px;
-}
-
-#content-wrap {
-       padding : 0px;
-       border-width : 0px 0px 0px 1px;
-       border-style : solid;
-       border-color : #c0c0c0;
-       margin : 0px;
-}
-
-#feeds-holder {
-       padding : 0px;
-       border-color : #c0c0c0;
-       border-left-width : 0px;
-       border-bottom-width : 0px;
-       border-top-width : 0px;
-       overflow : hidden;
-       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
-       background : #f9fbff;
-}
-
-#headlines-wrap-inner {
-       padding : 0px;
-       margin : 0px;
-       border-width : 0px;
-}
-
-#headlines-frame {
-       padding : 0px;
-       border-color : #c0c0c0;
-       border-style : solid;
-       border-width : 0px;
-       margin-top : 0px;
-       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
-}
-
-#headlines-toolbar_splitter, #toolbar_splitter {
-       display : none;
-}
-
-#toolbar {
-       padding : 0px;
-       margin : 0px;
-       border-width : 0px;
-       white-space: nowrap;
-       font-size : 12px;
-       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
-}
-
-#header {
-       border-width : 0px;
-       text-align : right;
-       color : #555;
-       padding : 5px 5px 0px 0px;
-       margin : 0px;
-       position : absolute;
-       right : 0px;
-       top : 0px;
-       z-index : 5;
-}
-
-#footer {
-       text-align : center;
-       color : #555;
-       padding : 4px 4px 8px 4px;
-       border-width : 0px;
-}
-
-#content-insert {
-       padding : 0px;
-       border-color : #c0c0c0;
-       border-bottom-width : 0px;
-       border-right-width : 0px;
-       border-left-width : 0px;
-       line-height: 20px;
-       overflow : auto;
-}
-
-.dijitTreeLabel.Unread {
-       font-weight : bold;
-}
-
-.dijitTreeLabel {
-       outline : 0;
-}
-
-.feedParam {
-       color : #555;
-       float : right;
-       margin-right : 1em;
-}
-
-.labelParam {
-       float : right;
-       margin-right : 1em;
-}
-
-.dijitTreeLabel.Disabled, .labelParam.Disabled {
-       color : #555;
-}
-
-.dijitTreeRow.Error {
-       color : red;
-}
-
-.dijitTreeRow.Hidden {
-       display : none;
-}
-
-img.feedIcon, img.tinyFeedIcon {
-       width : 16px;
-       height : 16px;
-       vertical-align : middle;
-       display : inline-block;
-}
-
-.dijitDialog .dijitToolbar {
-       border : 1px solid #c0c0c0;
-}
-
-.dijitDialog h2 {
-       margin-top : 0px;
-       margin-bottom : 4px;
-       border-width : 0px;
-}
-
-.player {
-       display : inline-block;
-       color : #555;
-       font-size : 11px;
-       font-family : sans-serif;
-       border : 1px solid #555;
-       padding : 0px 4px 0px 4px;
-       margin : 0px 2px 0px 2px;
-       width : 50px;
-       text-align : center;
-       background : white;
-}
-
-.player.playing {
-       color : #00c000;
-       border-color : #00c000;
-}
-
-.player:hover {
-       background : #f0f0f0;
-       cursor : pointer;
-}
-
-#headlines-spacer {
-       height : 100%;
-       margin-left : 1px;
-       text-align : center;
-       padding : 1em;
-       color : #555;
-}
-
-ul#filterDlg_Matches, ul#filterDlg_Actions {
-       max-height : 100px;
-       overflow : auto;
-       list-style-type : none;
-       border-style : solid;
-       border-color : #c0c0c0;
-       border-width : 0px 1px 1px 1px;
-       background-color : #ecf4ff;
-       margin : 0px 0px 5px 0px;
-       padding : 0px;
-}
-
-ul#filterDlg_Matches li, ul#filterDlg_Actions li {
-       cursor : pointer;
-       padding : 0px 0px 0px 5px;
-}
-
-ul#filterDlg_Matches li div.dijitCheckBox, ul#filterDlg_Actions li div.dijitCheckBox {
-       margin-right : 5px;
-}
-
-ul.helpKbList {
-       max-height : 300px;
-       overflow : auto;
-       list-style-type : none;
-       border : 1px solid #c0c0c0;
-       background-color : #ecf4ff;
-       margin : 0px 0px 5px 0px;
-       padding : 5px;
-}
-
-ul.helpKbList span.hksequence {
-       width : 6em;
-       margin-left : 20px;
-       color : #88b0f0;
-       font-weight : bold;
-       display : inline-block;
-}
-
-ul.helpKbList h2 {
-       margin-top : 0px;
-}
-
-.dijitTreeNode .loadingNode {
-       margin-left : 3px;
-       height : 9px;
-}
-
-span.collapseBtn {
-       cursor : pointer;
-}
-
-div.postContent p {
-       max-width : 650px;
-}
-
-div.postContent iframe {
-       min-width : 50%;
-}
-
-div.postHeader span.author {
-       color : #555;
-       font-size : 11px;
-       font-weight : normal;
-}
-
-body#ttrssZoom {
-       margin-left : auto;
-       margin-right : auto;
-       padding : 20px;
-       max-width : 800px;
-       background : #f9fbff;
-}
-
-body#ttrssZoom div.postContent p {
-       max-width : 650px;
-}
-
-body#ttrssZoom div.postHeader {
-       margin : 10px;
-       border : 1px solid #ccc;
-       box-shadow : none;
-       border-radius : 4px;
-}
-
-body#ttrssZoom div.postReply {
-       border : 1px solid #ccc;
-       border-radius : 4px;
-       box-shadow : inset 0px 0px 3px rgba(0,0,0,0.1);
-       background : white;
-}
-
-body#ttrssZoom div.postContent {
-
-}
-
-body#ttrssZoom div.footer {
-       margin-top : 1em;
-       text-align : center;
-}
-
-body#ttrssZoom div.postContent img {
-       max-width : 650px;
-       height : auto;
-} 
-
-select.attachments {
-       display : block;
-       margin-top : 10px;
-       max-width : 120px;
-}
-
-div.hl.active {
-       border-color : #88b0f0;
-}
-
-#selected_prompt {
-       margin-right : 25px;
-}
-
-#feedTree .dijitTreeRow {
-       padding : 2px 0px 2px;
-       border-width : 1px;
-       border-color : transparent;
-       color : #333;
-}
-
-#feedTree .dijitTreeNode {
-       padding : 0px;
-       border-width : 0px;
-}
-
-#feedTree { 
-       height : 100%;
-       overflow-x : hidden;
-       font-family : "Segoe UI", Tahoma, sans-serif;
-}
-
-#feedTree .counterNode.aux {
-       background : #f0f0f0;
-       color : #999;
-       border-color : #f0f0f0;
-}
-
-#feedTree .counterNode {
-       font-weight : bold;
-       display : inline-block;
-       font-size : 9px;
-       text-align : center;
-       border : 1px solid #88b0f0;
-       color : white;
-       background : #88b0f0;
-       border-radius : 4px;
-       vertical-align : middle;
-       float : right;
-       margin-right : 5px;
-       position : relative;
-       top : 2px;
-       min-width : 23px;
-}
-
-#feedTree .dijitTreeRow {
-       max-width: 100%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-
-body#ttrssPrefs hr {
-       border-color : #ecf4ff;
-       max-width : 100%;
-}
-
index f542a390bf833fbfcaed6f4d6a002acbb7ae44ba..0141b1a8e5c31a072c3ebfe8219ab412f587d689 100755 (executable)
@@ -47,7 +47,7 @@
                <head>
                <title>Tiny Tiny RSS data update script.</title>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-               <link rel="stylesheet" type="text/css" href="utility.css">
+               <link rel="stylesheet" type="text/css" href="css/utility.css">
                </head>
 
                <body>
                }
 
                update_daemon_common(isset($options["pidlock"]) ? 50 : DAEMON_FEED_LIMIT);
-               housekeeping_common(true);
+
+               if (!isset($options["pidlock"]) || $options["task"] == 0)
+                       housekeeping_common(true);
 
                PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
        }
index d5b6a45e36b0cf35fa088f875840382077d2544e..9d948a64d3c5cdea2e19cea5e1fcfa8d9f04c5ae 100755 (executable)
                                        if (!$master_handlers_installed) {
                                                _debug("[MASTER] installing shutdown handlers");
                                                pcntl_signal(SIGINT, 'sigint_handler');
+                                               pcntl_signal(SIGTERM, 'sigint_handler');
                                                register_shutdown_function('shutdown', posix_getpid());
                                                $master_handlers_installed = true;
                                        }
diff --git a/utility.css b/utility.css
deleted file mode 100644 (file)
index ac0180e..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-body {
-       background : #f9fbff;
-       color : black;
-       padding : 0px;
-       font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-       font-size: 14px;
-       margin-left : auto;
-       margin-right : auto;
-       max-width : 800px;
-}
-
-form {
-       margin : 10px 0px 0px 0px;
-       padding : 0px;
-}
-
-div.content {
-       background : white;
-       border : 1px solid #ccc;
-       padding : 10px;
-       border-radius : 4px;
-       box-shadow : inset 0 0 3px rgba(0,0,0,0.1);
-}
-
-p.warning {
-       color : red;
-}
-
-p.query, code {
-       color : green;
-}
-
-p.insensitive {
-       color : gray;
-}
-
-div.insensitive-small {
-       color : gray;
-       font-size : 10px;
-}
-
-.floatingLogo {
-       float : right;
-       position : relative;
-       top : -10px;
-}
-
-a {
-       color : #4684ff;
-       text-decoration : none;
-}
-
-a:hover {
-       color : black;
-}
-
-div.notice, div.warning, div.error {
-       padding : 4px 10px 4px 4px;
-       display : inline-block;
-       margin : 2px 0px 4px 0px;
-       font-size : 12px;
-       border-style : solid;
-       border-color : #ccc;
-       border-radius : 4px;
-       border-width : 1px;
-       box-shadow : 0px 0px 2px rgba(0,0,0,0.1);
-}
-
-div.notice div.inner, div.warning div.inner, div.error div.inner {
-       vertical-align : middle;
-}
-
-div.notice {
-       background : #ecf4ff;
-       border-color : #88b0f0;
-}
-
-div.warning {
-       border-color : #EFDC88;
-       background : #fff7d5;
-}
-
-div.error {
-       background : #ffcccc;
-       border-color : #ff0000;
-}
-
-div.warning img, div.notice img, div.error img {
-       margin-right : 4px;
-       vertical-align : middle;
-}
-
-div.warning span, div.notice span, div.error span {
-       display : table-cell;
-       vertical-align : middle;
-
-}
-
-h1 {
-       color : #88b0f0;
-       font-size : 32px;
-       margin : 20px 0px 5px 0px;
-       text-shadow : 0 0 6px #fff;
-}
-
-h2 {
-       color : #88b0f0;
-       font-size : 14pt;
-       border-width : 0px 0px 1px 0px;
-       border-color : #f0f0f0;
-       border-style : solid; 
-}
-
-div.content > h2 {
-       margin-top : 0px;
-}
-
-div.rss h1 {
-       border-width : 0px 0px 1px 0px;
-       border-color : gray;
-       border-style : dotted;
-       color : gray;
-       margin-right : 90px;
-}
-
-div.rss h2 {
-       font-size : 12pt;
-}
-
-div.rss a.extlink {
-       color : gray;
-       border-width : 0px 0px 1px 0px;
-       border-color : #778899;
-       border-style : dotted;
-       font-size : 9pt;
-}
-
-div.rss img {
-       max-width : 775px;
-}
-
-div.rss p.description {
-       color : gray;
-       font-size : 9pt;
-}
-
-div.rss div.content {
-       margin-top : 0.5em;
-}
-
-div.rss img.feedicon {
-       float : right;
-}
-
-div.rss hr {
-       border-width : 0px 0px 1px 0px;
-       border-style : dashed;
-       border-color : #e0e0e0;
-}
-
-body#sharepopup {
-       background-color : white;
-       background-image : url("images/toolbar.png");
-       background-repeat : repeat-x;
-       background-position : bottom;
-       margin : 10px;
-       padding : 0px;
-}
-
-body#sharepopup h1 {
-       font-size : 14px;
-       margin : 0px;
-       color : #88b0f0;
-}
-
-body#sharepopup table {
-       background : white;
-       border : 1px solid #88b0f0;
-       padding : 5px;
-}
-
-body#sharepopup form { 
-       height : 100%;
-}
-
-body#sharepopup input { 
-       width : 100%;
-}
-
-div.autocomplete {
-       position : absolute;
-       width : 250px;
-       background-color : white;
-       border :1px solid #778899;
-       margin : 0px;
-       padding : 0px;
-       z-index : 4;
-}
-
-div.autocomplete ul {
-       list-style-type : none;
-       margin : 0px;
-       padding : 0px;
-       font-size : 10px;
-}
-
-div.autocomplete ul li.selected { 
-       background-color : #fff7d5;
-}
-
-div.autocomplete ul li {
-       list-style-type : none;
-       display : block;
-       margin : 0;
-       padding : 2px;
-       height : 32px;
-       cursor : pointer;
-}
-
-fieldset { 
-       border-width : 0px;
-       padding : 0px 0px 5px 0px;
-       margin : 0px;
-}
-
-fieldset input {
-       font-family : sans-serif;
-       font-size : medium;
-       border-spacing : 2px;
-       border : 1px solid #b5bcc7;
-       padding : 2px;
-}
-
-fieldset label {
-       width : 120px;
-       margin-right : 20px;
-       display : inline-block;
-       text-align : right;
-       color : gray;
-}
-
-body.otp {
-       margin : 1em;
-       padding : 0px;
-}
-
-form.otpform {
-       margin : 0px;
-       padding : 0px;
-}
-
-form.otpform label {
-       margin : 0px;
-       padding : 0px;
-}
-
-body.otp div.content {
-       display : inline-block;
-       width : auto;
-}
-
-span.hint {
-       font-size : 10px;
-       color : gray;
-}